it-swarm.com.de

the_content und wp_link_pages

Viele Plugins fügen the_content anscheinend einen Filter-/Aktions-Hook hinzu, um verwandte Posts, Werbung usw. anzuzeigen. Das Problem ist, dass diese vor nach der Paginierung erscheinen, so dass die Paginierung nach unten gedrückt wird.

Ist es möglich, die Post-Paginierung direkt nach dem Inhalt anzuzeigen? Es scheint, dass wp_link_pages nur innerhalb der Schleife verwendet werden kann.

3
Jürgen Paul

Ich denke du hast:

the_content();
wp_link_pages();

in Ihrer Themendatei. Sie können also stattdessen Folgendes versuchen ( PHP 5.4+ ):

/**
 * Append the wp_link_pages to the content.
 */
! is_admin() && add_filter( 'the_content', function( $content )
{
    if( in_the_loop() ) 
    {
        $args = [ 'echo' => false ];        // <-- Adjust the arguments to your needs!
        $content .= wp_link_pages( $args );
    }
    return $content;
}, 10 );                                    // <-- Adjust the priority to your needs!

und passen Sie dann die Argumente und Priorität an Ihre Bedürfnisse an. Beachten Sie, dass der Parameter echo auf false gesetzt ist, da wir die Ausgabe zurückgeben müssen. Sie müssen dann wp_link_pages() aus Ihrer (untergeordneten) Designdatei entfernen.

Aktualisieren:

Wenn wir die zusätzliche wp_link_pages() nicht manuell entfernen möchten, können wir den wp_link_pages-Filter verwenden, um im Rahmen unseres the_content-Filter-Rückrufs nur die Ausgabe anzuzeigen:

/**
 * Append the wp_link_pages to the content.
 */
! is_admin() && add_filter( 'the_content', function( $content )
{
    if( in_the_loop() ) 
    {
        $args = [ 'echo' => false, '_show' => true ];  // <-- Adjust the arguments to your needs!
        $content .= wp_link_pages( $args );
    }
    return $content;
}, 10 );                                              // <-- Adjust the priority to your needs!

/**
 * Only display wp_link_pages() output when the '_show' argument is true.
 */
add_filter( 'wp_link_pages', function( $output, $args )
{
    return ! isset( $args['_show'] ) || ! wp_validate_boolean( $args['_show'] ) ? '' : $output;
}, 10, 2 );

hierfür haben wir das zusätzliche Argument _show eingeführt.

8
birgire