Установите ограничения на публикации и контент для домашней страницы, страницы блога и архива
Опубликовано: 2013-08-15В этом уроке мы рассмотрим встроенные настройки Genesis, которые вы можете использовать для управления ограничениями содержимого в ваших архивах и шаблоне страницы блога.
Мы также примем во внимание настройки чтения WordPress и то, как они влияют на настройки Genesis.
Помимо этого, мы также рассмотрим некоторые рабочие фрагменты кода, которые вы можете использовать для дальнейшей настройки:
- Страница блога
- Архивы
- Домашняя страница
- Петля сетки
- Пользовательские типы сообщений
Мы будем использовать новую дочернюю тему Eleven40 Pro от StudioPress, а также дочернюю тему Genesis 2.0 Sample, которая не включает никаких элементов сетки или виджетов домашней страницы из коробки.
Тема Eleven40 Pro вместе с несколькими другими темами StudioPress, такими как тема Balance, включает в себя настраиваемый цикл сетки в файле home.php.
Чтение настроек в WordPress
Во-первых, давайте посмотрим на существующие настройки, которые WordPress предоставляет в настройках чтения. Эти настройки будут влиять на количество сообщений, отображаемых на всех страницах вашего архива, включая:
- Страница со списками блогов
- Страницы архива, включая страницы авторов, блогов, категорий, поиска и тегов.
Настройки чтения определяют, сколько сообщений отображается на всех страницах ваших архивов и на домашней странице, если оставить настройки по умолчанию, как показано на снимке экрана выше.
Настройки чтения НЕ контролируют вашу страницу блога, поскольку она контролируется настройками шаблона страницы блога, которые Genesis включает в Genesis > Настройки темы:
Давайте посмотрим на пример этого: если ваши настройки чтения настроены на отображение 5 сообщений, ваша домашняя страница и все архивы будут отображать 5 сообщений, однако страница вашего блога будет отображать то, что вы установили для отображения.
Несмотря на то, что в настройках чтения может быть установлено значение: Страницы блога показывают не более 5, это относится только к домашней странице и НЕ при использовании статической пользовательской страницы с шаблоном страницы блога для вашей пользовательской страницы блога.
Эти настройки контролируются настройками шаблона страницы блога Genesis, как показано на снимке экрана выше.
Настройка лимита сообщений на главной странице по умолчанию
Если вы хотите, чтобы ваши архивы отображали число, установленное в настройках чтения, но отображали другое количество сообщений на вашей домашней странице, вам нужно будет использовать некоторый пользовательский код в файле functions.php дочерних тем:
add_action( 'pre_get_posts', 'change_posts_number_home_page' ); function change_posts_number_home_page( $query ) { if ($query->is_home() && $query->is_main_query() ) { $query->set( 'posts_per_page', 5 ); <pre><code>return $query; } </code></pre> }
Приведенный выше код не повлияет на количество сообщений, отображаемых в ваших архивах.
Изменить количество сообщений, отображаемых в архивах
Вы также можете использовать этот код, чтобы изменить количество сообщений, отображаемых в разных архивах, таких как страницы архива категорий и авторов, не влияя на настройки чтения, которые контролируют другие:
add_action( 'pre_get_posts', 'change_number_posts_per_category' ); function change_number_posts_per_category( $query ) { <pre><code>if ( is_category('29') ) { $query->set( 'posts_per_page', 1 ); return $query; </code></pre> }}
Настройка лимита сообщений Grid Loop на домашней странице
Если ваша тема включает в себя цикл сетки в файле home.php, вы можете просто контролировать, сколько постов с полной шириной и сколько постов с циклом сетки будет отображаться на вашей домашней странице.
Кроме того, вы также можете контролировать ограничение контента как для избранных сообщений, так и для сообщений, отображаемых в сетке только на главной странице, поскольку код включен в файл home.php.
Все настройки находятся в коде цикла сетки файла home.php:
<?php remove_action( 'genesis_loop', 'genesis_do_loop' ); add_action( 'genesis_loop', 'eleven40_grid_loop_helper' ); /** Add support for Genesis Grid Loop */ function eleven40_grid_loop_helper() { <pre><code>if ( function_exists( 'genesis_grid_loop' ) ) { genesis_grid_loop( array( 'features' => 1, 'feature_image_size' => 0, 'feature_image_class' => 'alignleft post-image', 'feature_content_limit' => 0, 'grid_image_size' => 'grid-featured', 'grid_image_class' => 'grid-featured', 'grid_content_limit' => 250, 'more' => __( '[Continue reading]', 'eleven40' ), 'posts_per_page' => 5, ) ); } else { genesis_standard_loop(); } </code></pre> } genesis();
Приведенный выше PHP-код настроен на отображение 5 сообщений. Начиная с одного рекомендуемого поста, который отображает полную ширину контента и неограниченный лимит контента, так как для него установлено значение 0, поэтому он отображает полный контент первого поста.
Затем он отображает 4 сообщения в сетке, для каждого из которых установлено ограничение контента в 250 с избранным изображением, если вы загрузили по одному для каждого сообщения и установили его как избранное изображение.
Эти настройки перезаписываются настройками чтения, что означает, что если ваши настройки чтения настроены на отображение 20 сообщений, это то, что будет отображаться на вашей домашней странице независимо от настроек в приведенном выше цикле сетки.
Чтобы настроить это, вы можете использовать приведенный ниже PHP-код в файле functions.php ваших дочерних тем, чтобы перезаписать настройки чтения для цикла сетки и, следовательно, использовать настройки чтения для управления количеством сообщений, отображаемых на всех страницах вашего архива.
Изменить лимит сообщений Grid Loop
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() ) { $query->set( 'posts_per_page', '5' ); } }
Приведенный выше код также можно изменить для работы на любых других страницах с использованием цикла сетки, просто изменив условный тег в коде с is_home() на что-то другое.
Подстраницы главной страницы
Если вы также хотите контролировать количество сообщений, отображаемых на подстраницах для сетки или стандартных выдержек, вы можете использовать такой код:
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() && is_paged() ) { $query->set( 'posts_per_page', '5' ); } }
Узнайте больше об использовании цикла сетки Genesis для различных макетов домашней почты.
Изменить лимит контента для определенной категории
Вы также можете перезаписать настройки чтения WordPress и настроить лимит выдержек для любого архива, включая домашний архив, архив автора, блога, категории, поиска и страницы тегов.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(is_category('29') ) { return 20; } }
Приведенный выше код изменит длину выдержки на странице категории с идентификатором 29 на ограничение в 20 слов.
Вы также можете добавить назад теги форматирования HTML, удаленные из выдержек WordPress.
Кроме того, вы можете использовать приведенный ниже код для управления ограничением содержимого выдержек в определенных архивах, а затем также настроить другие для отображения установленного ограничения. Примечание. Ваш Genesis > Настройки темы > Архивы контента должен быть настроен на отображение выдержек, а не на ограничение содержимого.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category('web-design') ) { return 20; } else { return 500; } }
Приведенный выше код отображает ограничение содержания для выдержек в категории веб-дизайна 20, а все остальные архивы отображают ограничение 500.
Вот некоторый код PHP, который включает в себя массив из нескольких категорий:
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category(array( 153,154,156 ) ) ) { return 100; } else { return 300; } }
Этот код использует идентификаторы категорий и отображает ограничение контента 100 для 3 категорий. Все остальные архивы отображают ограничение в 300.
Узнайте больше о настройке выдержек.
Пользовательский тип записи (CPT)
Вот код, который определяет, сколько сообщений пользовательского типа должно отображаться на странице архива CPT:
add_action( 'pre_get_posts', 'cpt_archive_items_limit' ); function cpt_archive_items_limit( $query ) { <pre><code>if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'your-cpt' ) ) { $query->set( 'posts_per_page', '3' ); } </code></pre> }
Просто замените your-cpt в приведенном выше коде на имя вашего пользовательского типа записи.
Вывод
Вы сами можете убедиться, что использование хуков и фильтров WordPress также отлично работает в Genesis.
Похожие решения
- Настройка отображения выдержек из записей на любом шаблоне страницы архива
- Код для установки лимита архива содержимого Genesis
- Отображение полного содержимого сообщения или выдержек на определенных страницах архива
- Условная настройка страниц архива с использованием сообщений Pre Get Posts
- Отображать выдержки на странице блога и полный контент в других архивах в Genesis