WordPress постов на страницу через параметры URL GET - PullRequest
0 голосов
/ 06 октября 2018

Я хочу видеть все записи в моем блоге WordPress, которые отмечены foo.

Если я посещаю https://example.com/blog/tag/foo - он показывает мне количество страниц по умолчанию, 10, и возможностьподробнее см. внизу.

Можно ли использовать параметр URL, чтобы показать все сообщениям?Или показать 15 сообщений?

Если я использую ?order=asc или ?order=desc, я могу изменить порядок их отображения.Но если я использую ?posts_per_page=100, то ничего не изменится.

Я не хочу устанавливать какие-либо плагины или изменять код в моем блоге.

1 Ответ

0 голосов
/ 06 октября 2018

Вы можете попробовать следующее:

add_action( 'pre_get_posts', function( \WP_Query $q )
{
    if( ! is_admin() && $q->is_main_query() )
    {
        $paged = abs((int)$_GET['post_per_page']);
        if( ! empty( $paged ) && $paged >= 1 ){
            $q->set( 'posts_per_page', $paged );
        } elseif($paged === 0){
            $q->set( 'posts_per_page', -1 );
        }
    }
} );

Здесь вы можете указать для параметра post_per_page URL-адрес значение 0, если вы хотите все сообщения, или абсолютное значение INT, если вы хотите конкретное количество сообщений.

Обратите внимание, что это будет применяться ко всем основным запросам, не относящимся к администратору, поэтому вы можете захотеть ограничить редактирование запроса до страницы или типа страницы, которая вам нужна.

Если разбиение по страницам Wordpress по умолчанию (параметр страницы) не работает, вы можете добавить что-то вроде

$q->set( 'paged', get_query_var( 'paged' ) ?: 1 );

, которое можно использовать с ?paged=2 или /page/2 если у вас есть правильное переписывание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...