user
  • 0
Гуру

Как настроить количество сообщений блога на первой странице?

  • 0

В разделе «Настройки чтения» я могу указать, сколько сообщений блога должно отображаться на странице. Тем не менее, я хотел бы немного настроить это. Например, я хочу отображать только 2 сообщения на странице «/», но 3 сообщения на «/page/2», «/page/3» и т. д. Любой способ настроить домашнюю страницу так, чтобы отображалось на одно сообщение меньше, чем на странице другие страницы?

Share
  1. У администратора нет возможности изменить количество сообщений на странице, в архиве, теге или категории, но вы можете использовать query_posts() posts_per_page для установки числа. например, в файле index.php вашей темы или если вы используете статическую страницу в качестве домашней_страницы, файл page.php добавьте этот фрагмент кода над циклом

    if(is_home() || is_front_page()){
        global $query_string;
        parse_str( $query_string, $args );
        $args['posts_per_page'] = 2;
        query_posts($args);
    }
    

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

    другой пример — показать разное количество сообщений для разных категорий:

    global $query_string;
    parse_str( $query_string, $args );
    if(is_category('cats')){
        $args['posts_per_page'] = 7;
        query_posts($args);
    }elseif(is_category('dogs')){
        $args['posts_per_page'] = 4;
        query_posts($args); 
    }else{
        $args['posts_per_page'] = 10;
        query_posts($args);     
    }
    

    здесь мы используем условный тег is_category(), чтобы проверить, в какой категории мы находимся, на основе того, что мы установили количество отображаемых сообщений. Для кошек мы устанавливаем 7, для собак мы устанавливаем 4, и если это просто случайная категория, мы отображаем 10.

    • 0
  2. http://coffee2code.com/wp-plugins/custom-post-limits/

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

    В частности, этот плагин позволяет вам определять ограничения для:

    • Архивы авторов (архив со списком постов для любого автора)
    • Архивы авторов (список архивов сообщений для любого конкретного автора)
    • Архивы категорий (архив списков сообщений для любой категории)
    • Архив категорий (архив списков сообщений для любой конкретной категории)
    • Архивы по дате (архивные списки постов на любую дату)
    • Дневные архивы (архив списков постов за любой день)
    • Главная страница (список сообщений на первой странице блога)
    • Месячные архивы (архив списков постов за любой месяц)
    • Результаты поиска (список результатов поиска)
    • Архивы тегов (архив списков постов для любого тега)
    • Архив тегов (архив списков сообщений для любого конкретного тега)
    • Годовые архивы (архивные списки постов за любой год)
    • 0
  3. Я нашел эту ветку, хотя мои требования немного отличались от ОП. Мне нужно было иметь 16 сообщений на первой странице, а затем 15 сообщений на следующих страницах. Я нашел это решение благодаря ветке @Jan Fabry « Как показать один пост на главной странице, но иметь нормальный пейджинг ».

    Я публикую решение здесь, поскольку оно кажется подходящим для названия темы, а также, хотя решение Bainternet работает, кодекс WP не рекомендует использовать функцию query_posts(). Кроме того, на странице 2 будет дублированный пост, поскольку мы не компенсировали последующие посты (WordPress считает, что на главной странице всего 15 постов, хотя их 16).

    Смещение рассчитывается, начиная со страницы 2. Таким образом, если вы находитесь на странице 2 и количество сообщений на странице в настройках панели управления составляет 15, смещение равно ((2-2) * 15) + 16 = 16, на странице 3 это 31.

    Также есть дополнительная проверка того, что запрос является основным запросом, как указано в кодексе в хуке pre_get_posts.

    function set_offset_on_front_page($query)
    {
      if (!is_admin() && $query->is_main_query()) {
        if (is_category() && !is_paged()) {
          // +1 because we want to add the Photo Gallery (former chapter guides) to the query and still maintain the 3 per row layout
          $query->query_vars['posts_per_page'] = get_option('posts_per_page') + 1;
        }
        if (is_category() && is_paged()) {
          $posts_per_page = isset($query->query_vars['posts_per_page']) ? $query->query_vars['posts_per_page'] : get_option('posts_per_page');
          $query->query_vars['offset'] = (($query->query_vars['paged'] - 2) * $posts_per_page) + $posts_per_page + 1;
        }
      }
    }
    add_action('pre_get_posts', 'set_offset_on_front_page');
    
    • 0

Оставить ответ

You must login to add an answer.