содержание и страницы ссылок wp


Многие плагины, похоже, добавляют фильтр/действие в the_content для отображения связанных сообщений, рекламы и тому подобного. Проблема в том, что они появляются перед после разбивки на страницы, поэтому разбивка на страницы опускается ниже.

Можно ли отобразить разбивку по страницам сразу после содержимого? Похоже, wp_link_pages можно использовать только внутри цикла.

Author: Jürgen Paul, 2015-04-16

1 answers

Я думаю, у вас есть:

the_content();
wp_link_pages();

В файле вашей темы. Таким образом, вы можете вместо этого попробовать следующее (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!

, А затем настройте аргументы и приоритет в соответствии с вашими потребностями. Обратите внимание на параметр echo, он имеет значение false, потому что нам нужно вернуть вывод. Затем вам нужно удалить wp_link_pages() из вашего (дочернего) файла темы.

Обновление:

Если мы не хотим удалять лишние wp_link_pages() вручную, мы можем использовать фильтр wp_link_pages, чтобы отображать только выходные данные в нашем обратном вызове фильтра 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 );

Где мы ввели дополнительный аргумент _show для этой цели.

 8
Author: birgire, 2015-04-16 17:39:18