Показать другое количество сообщений на страницу в зависимости от контекста (например, домашняя страница, поиск, архив)

wordpress.stackexchange https://wordpress.stackexchange.com/questions/21

  •  16-10-2019
  •  | 
  •  

Вопрос

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

reading-settings-blog-pages-show-at-most-per-page

Я понимаю, что могу сделать это, редактируя файлы темы и изменив там параметры запроса, но я бы предпочел иметь более простой доступ к простой странице настроек. Давным -давно я наткнулся на плагин, который сделал это, но я не могу найти его сейчас.

Кто -нибудь знает о плагине, чтобы сделать это, или даже функцию, которую я мог бы поместить в функции. Php, чтобы выполнить то же самое?

Это было полезно?

Решение

Я считаю, что лучший способ сделать это в плагине - выполнить следующую образец, когда pre_get_posts Action Hook встречается. А $wp_query Объект доступен, что означает, что ваши условные теги доступны, но до того, как WordPress получит сообщения, что означает, что вы меняете Query VAR до первого запуска запроса, а не добавление второго запроса, например, когда Query_posts () используется в файле темы Анкет

function custom_posts_per_page($query) {
    if (is_home()) {
        $query->set('posts_per_page', 8);
    }
    if (is_search()) {
        $query->set('posts_per_page', -1);
    }
    if (is_archive()) {
        $query->set('posts_per_page', 25);
    } //endif
} //function

//this adds the function above to the 'pre_get_posts' action     
add_action('pre_get_posts', 'custom_posts_per_page');

Другие советы

Вы можете сделать пользовательский цикл, используя Query_posts и указать количество постов от is_home, is_archive и т. Д.

Просто простой оператор, а также Query_posts

К добавлению к этому вопросу. Кто -нибудь знает, как определить post_per_page для этой функции функции custom_posts_per_page ($ Query), если добавьте новую страницу в index.php

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>

Я понимаю, что могу сделать это, редактируя файлы темы и изменив там параметры запроса, но я бы предпочел иметь более простой доступ к простой странице настроек.

В интересах полноты я обнаружил, что query_posts в сочетании с $query_string Конкатенация работает хорошо.

Я поместил этот код в index.php (моя тема не имеет категории. php) ...

<?php 
if (!is_front_page()) { 
    query_posts($query_string . "&posts_per_page=20"); 
}
?>

Конечно, то, что мы делаем здесь, это изменение строки внутреннего запроса петли, Переоценить номер по умолчанию постов на страницу.

Он работает в лакомстве для предоставления меньшего списка сообщений на домашней странице, где я показываю полные сообщения, и гораздо более крупный список постов везде (категории, дата и т. Д.), где я только показываю резюме после поста.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top