Как да скриеш категория на началната страница в WordPress

Искаш да скриеш отделни публикации или всички публикации от определени категории, за да не се показват на Home страницата? Виж как.

Реших да направя някои промени по блога и се оказа, че ми е необходимо да скрия в началната страница публикациите от една специална категория. За съжаление в WordPress няма такива възможности. Така че се налага да се използват странични средства. И така, да видим как можеш да скриеш категория на началната страница на WordPress.

Как да скриеш категория на началната страница в WordPress
Как да скриеш категория на началната страница в WordPress

Първи начин – ръчно, с добавяне на код

Забележка: Добре е да се посочи факта, че винаги е препоръчително да се използва child theme – „дъщерна тема“, т.е. тема, създадена специално и зависима от основната, коeто позволява да запазим направените персонализации и да не се налага да повтаряме операцията всеки път, когато оригиналната тема се актуализира.

1. Друга предварителна операция е, да се идентифицира ID на категорията (или категориите), чиито публикации трябва да бъдат изключени от началната страница. За да направим това, отиваме на елемента Публикации –>Категории на бекенда на сайта, след това прекарваме мишката върху името на съответната категория. Относителната връзка ще се появи отдолу на прозореца на браузъра, от там трябва да извлечем идентификатора ID.
В моя пример исканият идентификатор ID е 121.

Намиране на ID на категория
Намиране на ID на категория

2. Ще използваме филтър на куката (hook): pre_get_posts, за да за изключим тези публикации.

Сега, нека влезем в системата за управление на WordPress и да преминем към менюто, като изберем Външен вид –>Редактор на теми. В този момент отдясно на екрана трябва да намерим и редактираме файла functions.php. Като кликнем върху елемента ще видим кода на файла в центъра на екрана: можем да добавим следния PHP код в края на файла:

// Exclude Category Posts from Home Page
function themeprefix_exclude_category( $query ) {
   if ( $query->is_home() ) {
      $query->set( 'cat', '-121' );//here is the ID of the category to hide
   }
   return $query;
}
add_action( 'pre_get_posts', 'themeprefix_exclude_category' );

3. С последния ред казваме на WordPress да изпълни функцията. Ако добавим само функция, не означава, че WordPress ще я използва. Една функция сама по себе си не прави нищо, ако не се обади от някъде. Използваме следния код

add_action( 'pre_get_posts', 'themeprefix_exclude_category' );

преди или след функцията, която сме създали във functions.php, за да кажем на WordPress да я изпълни.

Всичко, което целият горен код прави, е да извърши действие преди зареждане на публикации: ако страницата е начална страница или страницата, където се зареждат всички публикации, тогава премахва категорията с ID 121 (минусът е операторът за изключване).

Ако искаме да изключим повече категории, ще ги разделим със запетая, ето как:

$query->set( 'cat', '-11,-105,-121' );

В примера категории с ID 11, 105 и 121 са ​​изключени (обърни внимание на знака пред номера), но списъкът може да бъде удължен по желание.

Горната функция работи само на началната страница и ще премахне всички публикации, които принадлежат към изброените номера на категориите.

Обяснение: Обърни внимание на pre_get_posts. Кодът казва на WordPress кога да стартира куката (hook) – в този случай преди да получи публикациите от базата данни. Следващият код themeprefix_exclude_category казва на WordPress каква функция да се изпълни в pre_get_posts. Изобщо в ред add_action в кода: първата част е мястото, където да се изпълни действието, а втората е действието, което да се изпълни.

4. Сега всичко, което трябва да направиш, е да го тестваш. Провери страницата на блога си и се увери, че публикациите, за които става въпрос, не се показват. Ако не работи, провери правописа в кода и се увери, че -[id] показва правилния идентификационен номер за публикациите, които искаш да изключиш.

5. Ако вместо is_home() използвахме is_page('example-slug'), бихме могли да изключим тази категория от една определена страница, като вмъкнем slug като аргумент на функцията вместо 'example-slug'.

6. Обратното на точка 3. също е вярно: ако искаш да покажеш само определена категория, използвай същия код, но без минус.

// Only Portfolio Category
function only_portfolio_category( $query ) {
   if ( $query->is_home() && $query->is_main_query() ) {
   $query->set( 'cat', '3' );
   }
add_action( 'pre_get_posts', 'only_portfolio_category' );

В този пример ще се показват само публикациите в категория с идентификатор ‘3’.

Към т.3.: Възможно е твоята тема на твоя блог да няма възможност за вмъкване на код в functions.php в администраторския панел, тогава ще трябва да го направиш на твоя сървър в хостинга, като отидеш на Файловия мениджър–>public_html–>wp-content–>themes–>твоята child тема–>и там направиш промените в нейния functions.php файл.

Като запазиш модифицирания файл и го презаредиш на сървъра, получаваш желания ефект, без да се налага да инсталираш допълнителни плъгини.

Виж още: Изтриване на страници и публикации в WordPress: 301 пренасочване, 404 или 410 код?

Скриване на категории в WordPress с плъгин

Ако искаш да скриеш цели категории от определени раздели на своя блог, можеш да използваш приставката Ultimate Category Excluder.

Този плъгин е много лесен за използване, тъй като ще ти покаже удобна таблица, където можеш да избереш какво искаш да скриеш и в кой раздел.

Инсталирай и активирай приставката, след което иди на Настройки–>Изключване на категории. Ще намериш таблица с всички свои категории в първата колона.

Като активираш различните полета, можеш да избереш дали да скриеш категория:

  • от началната страница на блога;
  • от RSS емисия ;
  • от всички архиви;
  • от резултатите от търсенето в сайта.

Този плъгин няма да ти позволи да скриеш статии от резултатите от търсенето с Google. За да направиш това, ще трябва да използваш други методи, които ти позволяват да присвоиш мета тага noindex към своята страница.

Например, можеш да използваш Yoast SEO или Rank Math – и двата плъгина имат раздел, в който можеш да посочиш, че страницата не трябва да се индексира.

Плъгинът Ultimate Category Excluder може да скрие само категории публикации, но не и продуктови категории на WooCommerce или евентуално категории медийни файлове, ако използваш например категории на медийна библиотека.

Скриване на единична публикация в WordPress

Ако имаш изискване да скриеш единични публикации от различни секции на блога си в WordPress, тогава предлагам да използваш плъгин WordPress Hide Posts.

След като приставката е активирана, на страницата за редактиране на публикациите ще намериш раздел, наречен Скриване на публикации. Тук ще има списък с квадратчета за отметка, които да активираш.

Постави отметки там, където искаш публикацията да бъде скрита
Постави отметки там, където искаш публикацията да бъде скрита

Избери дали искаш да скриеш публикацията:

  • от началната страница (началната страница на сайта, ако има раздел, в който се показват статии);
  • от страницата на категорията;
  • от резултатите от търсенето в сайта;
  • от страницата с етикети;
  • от страницата на автора;
  • от архива;
  • от RSS емисия;
  • от страницата на блога (тази, която сте задали като страница със статии в настройките за четене);
  • от менютата за навигация в публикацията.

Ако използваш WooCommerce, също така е възможно да скриеш определени продукти от страницата Магазин и от страницата с продуктова категория.

В секцията Настройки за скриване на публикации на плъгина можеш също да активираш приставката за страници, прикачени файлове и всякакви други формати на публикации (като продукти). След като полето е активирано, в съответните страници за редактиране ще намериш раздел, подобен на този за статиите.

Настройки за скриване на публикации
Настройки за скриване на публикации на плъгина

Плъгинът няма ефект върху търсачките, така че твоите статии ще бъдат индексирани според предпочитанията ти в SEO плъгина.

Ако имаш някакви въпроси, постави ги в коментарите отдолу.

Ако ви е харесала публикацията, споделете я:

Leave a Reply

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.