Как скрыть статьи отдельных категорий с главной страницы WordPress
Опубликовано: 01.09.2018
Вступление
По умолчанию все статьи со всех разделов блога WordPress публикуются на главной странице. Если вы, конечно, в настройках указали главную страницу, как основную. Иногда это не очень удобно. Например, на этом блоге есть небольшие статьи и таблицы, которыми не хочется засорять главную страницу блога.
Скрыть статьи отдельных категорий с главной страницы WordPress можно, добавив в код шаблона функцию, которая будет фильтровать категории по их ID для отображения на главной.
Важно! При работе, редактировании любого файла в структуре WordPress, перед коррекцией любого файла сделайте его резервную копию и сохраните ее на своем компьютере. В случае неудачного редактирования, можно будет восстановить файл в виде до редакции.
Редактирование кодов всех файлов WP делайте в текстовых редактор, типа Notepad++ или простом стандартном «Блокноте» Windows. Не пользуйтесь для редактирования кодов WP редакторами типа Microsoft word.
Как узнать ID категории, раздела WordPress
Чтобы скрыть статьи отдельных категорий с главной страницы WordPress для начала нужно узнать ID (уникальный идентификационный номер) разделов которые нужно исключить. Для этого достаточно открыть любой раздел в редакторе, навести на название нужного раздела курсор и внизу посмотреть всплывшую строку браузера. По шагам:
Входите в консоль; В меню консоли нужен пункт: Записи → Рубрики В открывшемся окне редактора разделов, наводим курсор на нужный раздел; Внизу в адресе редактируемого раздела смотрим цифры после ID= ,и до знака &. Это и есть ID раздела.Два способа скрыть статьи отдельных категорий с главной страницы WordPress
P.S. Не рекомендую первый способ. Он не оправдано сложен (два шага) и слишком привязан к шаблону сайта, можно промахнуться с внесением кода.
Скрыть статьи отдельных категорий с главной страницы WordPress можно двумя способами. Первый способ, вставить код указанный ниже в файл index.php. второй способ, вставить другой код в файл functions.php. Второй работает лучше.
Чтобы исключить посты отдельных категорий с главной страницы блога, создадим фильтр-функцию и внесем ее в файл index.php . Код следующий:
<?php if ( is_home() ) { query_posts( 'cat=-77' ); } ?>, где цифра 77, это ID исключаемой рубрики.
Исключаем посты нескольких разделов с главной страницы WordPress
Для исключения нескольких категорий блога, нужно в фильтрующем коде перечислить все ID исключаемых разделов. Например:
<?php if ( is_home() ) { query_posts( 'cat=-3,-79' ); } ?>где убираем все посты разделов с ID 79 и 3. ID категорий перечисляются через запятую, со знаком минус.
Можно скрыть отдельные посты с главной страницы сайта:
<?php if ( is_home() ) { query_posts( 'p=5' ); } ?>где 5 это ID поста, исключаемого с главной страницы.
Делаем изменения в файле index.php
Остается последний шаг. Нужно вставить код в файл index.php.
Открываем редактор в консоли блога. В редакторе открываем файл index.php; В нем ищем [ div id=»content» ]; В границах этого div, после кода <?php $options = get_option>вставляем один из выше показанных кодов.
Недостатки этого способа
У такого способа, исключения разделов и постов с главной страницы блога WP. есть недостатки:
Важно понимать, что функция query_posts изменяет основной Цикл WordPress. Функция не должна использоваться более одного раза на странице. Функция query_posts увеличивает количество запросов в Базу данных, что увеличит время загрузки сайта с объемными базами данных.Первый альтернативный вариант (лучший)
Избежать эти недостатки, и при этом исключить отдельные категории с главной можно вот таким кодом, вставив его в конец файла functions.php. Работает безотказно, пока до версии до версии 4.3.1.
function exclude_cat($query) { if ($query->is_home) {$query->set('cat',' -77, -113, -137, -204');} // id категории 77,113,137,204 return $query; } add_filter('pre_get_posts','exclude_cat');Чтобы исключить с главной отдельные теги
function exclude_post($query) { if ($query->is_home) { $tags = array('6', '67', '83'); // id тегов $query->set('tag_not_in', $tags);} return $query;} add_filter('pre_get_posts','exclude_post');Чтобы убрать с главной отдельные статьи
function exclude_post($query) { if ($query->is_home) {$query->set('post__not_in', array(115, 118) );} // id записи (поста) return $query; } add_filter('pre_get_posts','exclude_post');Совет по делу! Чтобы избежать ручного редактирования основного файла сайта ( functions.php ) и не потерять сайт из-за ошибки, установите плагин Code Snippets ( https://ru.wordpress.org/plugins/code-snippets/ ) Он упростит работу с системными файлами до безопасной.
Второй альтернативный способ
Установить плагин для управления показом статей на страницах сайта.
©www.wordpqess-abc.ru