it-swarm.com.de

Erstellen Sie einen Shortcode [NEXT] und [PREVIOUS], um ihn in bestimmten Posts für die Post-Navigation zu platzieren

Ich brauche wirklich etwas Hilfe, ich weiß nicht, wohin ich mich mit dieser Bitte wenden soll. Ich möchte einen Shortcode zu einem meiner Beiträge hinzufügen. Die Template-Tags get_next_post () und get_previous funktionieren bei mir nicht, da ich nicht auf jeder Post-Seite eine Post-Navigation möchte und steuern möchte, wo sie angezeigt wird. In einem DIV in einer HTML-Struktur habe ich in einem Beitrag erstellt.

Also muss ich Shortcodes aus get_next_post () und get_previous_post () generieren

4
brett

das ist sehr einfach zu tun ...

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

Viel Glück! Hier für jede Frage ....

1
zina

Es gab einige Probleme mit dem obigen Code. Sie müssen die Shortcode-Ausgabe mit ob_start () umbrechen, damit sie an der richtigen Stelle auf dem Bildschirm angezeigt wird. Als einer der oben genannten Kommentatoren geben diese Funktionen ihr Ergebnis bereits wieder, sodass das Einfügen in eine return-Anweisung nicht richtig funktioniert.

Hier ist meine Lösung:

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