Как скрыть статьи отдельных категорий с главной страницы WordPress

Вступление

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

Скрыть статьи отдельных категорий с главной страницы WordPress можно, добавив в код шаблона функцию, которая будет фильтровать категории по их ID для отображения на главной.

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

Редактирование кодов всех файлов WP делайте в текстовых редактор, типа Notepad++ или простом стандартном «Блокноте» Windows. Не пользуйтесь для редактирования кодов WP редакторами типа Microsoft word.

Как узнать ID категории, раздела WordPress

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

  • Входите в консоль;
  • В меню консоли нужен пункт: Записи → Рубрики
  • В открывшемся окне редактора разделов, наводим курсор на нужный раздел;
  • Внизу в адресе редактируемого раздела смотрим цифры после ID= ,и до знака &. Это и есть ID раздела.

Узнать ID разделов WP

Два способа скрыть статьи отдельных категорий с главной страницы 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

Другие статьи раздела: CMS WordPress

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.