Creación de un Shortcode [NEXT] y [PREVIOUS] para colocar en publicaciones específicas para la navegación posterior

4

Realmente necesito ayuda, no sé a dónde acudir con esta solicitud. Me gustaría agregar un shortcode a una de mis publicaciones. Las etiquetas de plantilla get_next_post () y get_previous no funcionarán para mí, ya que no quiero la navegación de publicaciones en cada página de publicación y quiero controlar dónde se muestra. En un DIV en una estructura HTML que he creado en una publicación.

Entonces, lo que necesito es generar códigos cortos de get_next_post () y get_previous_post ()

    
pregunta brett 24.03.2011 - 09:28

2 respuestas

1

esto es muy simple de hacer ...

 // next   
function next_shortcode($atts) {
        // global $post; -unnecessary 

           return '<div class="nav-next">'.next_post_link( '%link', '%title <span class="meta-nav">' . _x( '', 'Next post link', ' ' ) . '</span>',true ).'</div>';              
        }
        add_shortcode( 'next', 'next_shortcode' );

//prev
 function prev_shortcode($atts) {
     //global $post; -unnecessary 

       return '<div class="nav-previous">'.next_post_link( '%link', '%title <span class="meta-nav">' . _x( '', 'Previous post link', ' ' ) . '</span>',true ).'</div>';              
    }
    add_shortcode( 'prev', 'prev_shortcode' );

¡Buena suerte! Aquí para cualquier pregunta ....

    
respondido por el zina 24.03.2011 - 10:17
1

Hubo un par de problemas con el código anterior. Debes envolver la salida de shortcode con ob_start () para que haga eco en la pantalla en el lugar correcto. Además, como uno de los comentaristas mencionados anteriormente, esas funciones ya hacen eco de su resultado, por lo que ponerlos en una declaración de retorno no funcionará correctamente.

Aquí está mi solución:

add_shortcode( 'prev', 'prev_shortcode' );
add_shortcode( 'next', 'next_shortcode' );
function next_shortcode($atts) {
    global $post;
    ob_start(); 
    next_post_link( '<div class="nav-next">%link</div>', 'Next post link' );              
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
}

function prev_shortcode($atts) {
    global $post;
    ob_start();
    previous_post_link( '<div class="nav-previous">%link</div>', 'Previous post link' );              
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
}
    
respondido por el Marty Thornley 03.09.2011 - 19:55

Lea otras preguntas en las etiquetas