web-dev-qa-db-fra.com

the_content et wp_link_pages

De nombreux plugins semblent ajouter un hook filtre/action à the_content pour afficher les publications, les publicités, etc. Le problème est que ceux-ci apparaissent avant après la pagination, de sorte que la pagination est enfoncée plus bas.

Est-il possible d'afficher la post-pagination juste après le contenu? Il semble que wp_link_pages ne peut être utilisé que dans la boucle.

3
Jürgen Paul

Je suppose que vous avez:

the_content();
wp_link_pages();

dans votre fichier de thème. Vous pouvez donc plutôt essayer ce qui suit ( 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!

puis ajustez les arguments et priority à vos besoins. Notez que le paramètre echo est défini sur false, car nous devons renvoyer la sortie. Vous devez ensuite supprimer wp_link_pages() de votre fichier de thème (enfant).

Mettre à jour:

Si nous ne voulons pas supprimer manuellement la wp_link_pages() supplémentaire, nous pouvons utiliser le filtre wp_link_pages pour afficher uniquement la sortie, dans notre rappel de filtre the_content:

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

où nous avons introduit l'argument supplémentaire _show à cette fin.

8
birgire