Jak ukryć wpisy i kategorie w WordPressie?

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.

Marcin Guzik

Marcin Guzik

Zafascynowany WordPressem. Użytkownik WP od 2008 roku, od wersji 2.4, albo 2.5 (nie pamiętam dokładnie). Piszę na: mrcng.pl. Zawodowo: jestem właścicielem Net-Factory. Prywatnie: mąż, ojciec, instruktor karate.

Opieka i serwis stron internetowych

Zajmij się swoim biznesem a my zajmiemy się Twoją stroną. Zapewniamy stałą opiekę oraz wyspecjalizowany serwis dla stron na WordPress oraz sklepów internetowych WooCommerce.

Wybierz coś dla siebie