web-dev-qa-db-fra.com

Création d'un code court [SUIVANT] et [PRÉCÉDENT] à placer dans les messages spécifiques pour la navigation dans les messages

J'ai vraiment besoin d'aide, je ne sais pas vers qui me tourner avec cette demande. J'aimerais ajouter un shortcode à l'un de mes messages. Les balises de gabarit get_next_post () et get_previous ne fonctionneront pas pour moi car je ne veux pas de navigation dans les publications sur chaque page de publication et je veux contrôler l'endroit où elles s'affichent. Dans une DIV dans une structure HTML que j'ai créée dans un article.

Donc, ce dont j'ai besoin, c'est de générer des codes courts à partir de get_next_post () et get_previous_post ()

4
brett

c'est très simple à faire...

 // 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' );

Bonne chance! Ici pour toute question ....

1
zina

Il y avait quelques problèmes avec le code ci-dessus. Vous devez encapsuler la sortie en shortcode avec ob_start () afin de lui faire écho à l'écran au bon endroit. En outre, comme l’a mentionné l’un des commentateurs ci-dessus, ces fonctions reprennent déjà le résultat, ce qui les place dans une instruction return ne fonctionnera pas correctement.

Voici ma solution:

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;
}
1
Marty Thornley