Prawie rok temu napisałem krótką instrukcję jak za pomocą kodu w functions.php ukryć wyświetlanie podstron w wyszukiwarce WordPress. Dzisiaj trochę bardziej rozwinę temat ukrywania za pomocą funkcji w pliku functions.php.
Bardzo często budujemy karuzelę na stronie głównej w oparciu o standardowe wpisy ze specjalnie utworzonej kategorii „Rotator” albo tworzymy sekcję „Komunikaty i ogłoszenia” z krótkimi wpisami, które pięknie wyglądają na stronie głównej, ale już nie tak samo na domyślnych podstronach archiwów czy w pojedynczym szablonie wpisu.
Dlatego warto w takiej sytuacji ukryć konkretne wpisy lub całe kategorie.
Jak ukryć wpisy na podstronach archiwalnych po ID?
Chcesz przykładowo ukryć kilka wpisów z podstron archiwalnych, które WordPress tworzy automatycznie np. wp-lab.pl/2019, wp-lab.pl/2019/05/ itd.
Dodaj poniższy kod do pliku functions.php, z tym że w miejscu array( 1, 2, 3 ) wpisz ID wpisów, które mają zniknąć.
/* Hide Post (ID) from archive */
function wplab_hide_post_id_from_archive( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_archive() ) {
$query->set( 'post__not_in', array( 1, 2, 3 ) );
}
}
add_action( 'pre_get_posts', 'wplab_hide_post_id_from_archive', 1 );
Skąd wziąć ID wpisu?
Otwórz zakładkę Wpisy > Wszystkie wpisy, najedź kursorem na wpis, który chcesz ukryć; przeglądarka pokaże na samym dole okna link jaki zostanie otwarty po kliknięciu w wpis i będzie tam: post.php?post=ID&action; numer po „post=” to właśnie szukane ID wpisu.
Drugi sposób: otwórz zakładkę Wpisy > Wszystkie wpisy, wejdź w edycję wpisu i zobacz adres URL w przeglądarce; analogicznie znajdziesz tam ID wpisu.
www.twojadomena.pl/wp-admin/post.php?post=ID&action=edit
Jak ukryć kategorię wpisów na podstronach archiwalnych?
Analogicznie do przykładu powyżej dodaj poniższy kod do pliku functions.php:
/* Hide category posts from archive */
function hide_category_posts_from_archive($query) {
if ( $query->is_date) {
$query->set('cat', '-1');
}
return $query;
}
add_filter('pre_get_posts', 'hide_category_posts_from_archive');
Oczywiście w $query->set(’cat’, ’-1′); wprowadź numer ID swojej kategorii, którą chcesz ukryć. Numer ID uzyskasz w ten sam sposób jak numer ID wpisu. Otwórz zakładkę Wpisy > Kategorie, najedź lub otwórz do edycji kategorię do ukrycia. W adresie znajdziesz odpowiedni numer.
www.twojadomena.pl/wp-admin/term.php?taxonomy=category&tag_ID=1
Jak ukryć kategorię w wynikach wyszukiwania na WordPressie?
Dla eksperymentu dodaj w adresie URL po slash’u „?s=fraza” (w miejsce fraza wpisz nazwę firmy, domenę itp.) i naciśnij enter, zobaczysz co WordPress wyrzuci w wynikach wyszukiwania. Czasem warto ukryć w wynikach wyszukiwania niektóre wpisy, a nawet całe kategorie.
Aby ukryć kategorię, dodaj poniższy kod do pliku functions.php, w miejsce ’-1, -2′ wpisz ID kategorii.
/* Hide posts category from search*/
function wplab_hide_category_search( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_search ) {
$query->set( 'cat', '-1, -2' );
}
}
add_action( 'pre_get_posts', 'wplab_hide_category_search', 1 );
Chyba, że macie jakieś swoje metody na ukrywanie wpisów, kategorii? Dajcie znać w komentarzu.