wake-up-neo.com

Warum gibt es get_next_post_link () oder get_previous_post_link () die benötigten Links nicht zurück?

Es ist in Wordpress, Divi. Es schien mir eine einfache Aufgabe zu sein, aber irgendwie habe ich es nicht geschafft, das richtige Ergebnis zu erzielen, indem ich Tonnen von Stunden mit Codieren und Testen verbracht habe. Derzeit arbeite ich an einer Website, auf der es Beiträge gibt, und ich beabsichtige, dem Benutzer die Möglichkeit zu geben, zu den benachbarten Beiträgen zu springen, indem ein einfacher Link auf sie verweist. Ich habe versucht, sie in functions.php und dann in single.php einzufügen, aber das gleiche Ergebnis ... Nichts. Ich habe es über Wordpress debug.log überprüft, es zeigt, dass die Funktionen überhaupt keinen Wert zurückgeben. Beachten Sie, dass ich debug.log erwähne, weil ich dort Ausgaben weitergeleitet habe.

add_filter( 'the_content', 'post_navigation', 10, 2 );
function post_navigation($content) {
    $post = get_post();
    $post_type = get_post_type( $post );

    if ( $post_type == 'post' ) {
        $next_p = get_previous_posts_link();
        $content = $content . $next_p;

        return $content;
    } else {
        return $content;    
    }

}

Es hat keine richtig formatierte Ausgabe, aber zuerst wollte ich nur ein Ergebnis bekommen. Hinweis: debug.log zeigt an, dass der Hook the_content zweimal in einem einfachen Beitrag aufgerufen wurde, der zum zweiten Mal mit folgendem Inhalt angezeigt wird:

You are being timed-out out due to inactivity. Please choose to stay signed in or to logoff.</p>
<p>Otherwise, you will be logged off automatically.</p>

Jede Hilfe wäre sehr dankbar!

4
Geeocode

Warning Edit : Mark Kapluns Antwort bringt einen sehr guten Punkt auf den Punkt - dies wird Ihren Inhalt auf unerwartete Weise verändern. Angenommen, Sie haben eine andere Anwendung, die diesen Beitragsinhalt aus der WordPress-API liest - dieser Inhalt enthält auch diese Links, was wahrscheinlich nicht Ihren Wünschen entspricht. Sie sollten diese Methoden wirklich in Ihren Themenvorlagen anwenden, anstatt diese Informationen an den Inhalt selbst anzuhängen. Möglicherweise können Sie Überprüfungen der Integrität wie das Abgleichen mit der Variablen global $pagenow oder andere Methoden verwenden, um sicherzustellen, dass Sie diesen Vorgang nur ausführen, wenn Sie einen Beitrag im Front-End anzeigen.

Anscheinend verwenden Sie die falschen Methoden. WordPress ist manchmal etwas knifflig und in diesem Fall möchten Sie get_previous_post_link anstelle von get_previous_posts_link verwenden ( note : der Unterschied besteht darin, dass in der Methode, die Sie aufrufen, posts im Plural ist - in der gewünschten Methode ist post singular).

Also probieren Sie diese aus

EDIT: Hier ist ein aktualisiertes Beispiel, das auf Ihrem Code basiert

add_filter( 'the_content', 'post_navigation', 10, 2 );

function post_navigation($content) {
    $post = get_post();

    if ( 'post' === $post->post_type ) {
        $next_p  = get_next_post_link();
        $prev_p  = get_previous_post_link();
        $content = "{$content}<br/>{$prev_p} | {$next_p}";
    }

    return $content;    
}
4
phatskat

Tu es einfach nicht. Der the_content-Filter soll den Inhalt automatisch ändern, während Sie versuchen, eine Dekoration hinzuzufügen, keinen Inhalt. Sie werden auf sehr unerwartete Weise verletzt, je nachdem, wo genau Sie den Filter eingestellt haben und wie gut Sie ihn nach der beabsichtigten Verwendung entfernen. (Platzieren Sie es beispielsweise in einem globalen Bereich, und Ihre Auszüge erhalten möglicherweise die Links.)

Wenn Sie den angezeigten Inhalt bearbeiten müssen, indem Sie ihm eine Dekoration hinzufügen, tun Sie dies im Thema, an keinem anderen Ort.

3
Mark Kaplun