Dziś, podczas drobnych zmian w drzewku kategorii na jednej ze stron, którą się opiekuję zapytał mnie kolega, który akurat siedział obok (pogaduszki przy czymś chłodnym ;-)) o 2 kategorie, które mam na stronie – „wyklucz z wyszukiwania” i „wyklucz z RSS”. Pytanie oczywiście nie dotyczyło tego do czego te kategorie służą, bo to chyba oczywiste, tylko jak takie coś najprościej wdrożyć.

Wykluczanie wpisów z wyników wyszukiwania i kanału RSS w WordPressie

O samej zabawie kanałem RSS w WordPressie od dawna mam w Trello utworzoną cegiełkę, i mam nadzieję, że niebawem uda się opublikować poradnik na ten temat, bo pomimo upływu lat, i całego „postępu” RSS nadal jest to moim zdaniem najbielszy sposób na śledzenie aktualności na wybranych stronach. Chyba nawet lepszy niż newsletter… Ale w związku z zapytaniem kolegi w pewnym sensie muszę o ten temat zahaczyć dziś.

Jak już wspomniałem – mam (m.in.) 2 kategorie systemowe:

  • Wyklucz z wyszukiwania (ID: 17)
  • Wyklucz z RSS (ID: 21)

Wystarczy, że dowolny wpis dodam do którejś z tych kategorii, a zostanie on automatycznie wykluczony z wyników wyszukiwania i/lub kanały RSS.

Wykluczenie robię na podstawi numerów ID poszczególnych obiektów (w tym przypadku kategorii), co najprościej odczytać w panelu zarządzania WordPressem (WP-Admin) poprzez najechanie kursorem na wybrany element – w adresie URL zazwyczaj będzie identyfikator obiektu:

https://webinsider.pl/wp-admin/term.php?taxonomy=category&tag_ID=21

Za wykluczanie z wyników wyszukiwania odpowiada kod:

function webinsider_wp_exclude_category_from_search( $query ) {
    if ( $query->is_search && !is_admin() ) {
		$query->set( 'cat', '-17' ); // 17: Wyklcuz z wyszukiwania
	}
    return $query;
}
add_filter( 'pre_get_posts', 'webinsider_wp_exclude_category_from_search' );

Za wykluczanie z kanału RSS odpowiada kod:

function webinsider_wp_exclude_category_from_rss( $query ) {
	if ( $query->is_feed ) {
		$query->set( 'cat', '-21' ); // 21: Wyklucz z RSS
	}
	return $query;
}
add_filter( 'pre_get_posts', 'webinsider_wp_exclude_category_from_rss' );

Możemy też wykluczenia dokonać po tagach zamiast kategorii. Jednym:

$query->set( 'tag', '-4' );

Lub kilku:

$query->set( 'tag', '-4, -8' );

Możemy też wykluczenia dokonać np. po autorze:

$query->set( 'author', '-3' );

Kod możemy wstawić czy to do własnej wtyczki, czy do pliku functions.php, oczywiście motywu potomnego…

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!

Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.

Patryk

CEO Webinsider.pl, a do tego CTO, CIO, CFO, CMO, CSO, COO i CRO ;-)
Pasjonat nowych technologii - od sprzętu po oprogramowanie, od serwerów po smartfony i rozwiązania IoT. Potencjalnie kiepski bloger, bo nie robi zdjęć "talerza" zanim zacznie jeść.

Dumny przyjaciel swoich psów :-)
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera!