Określ, czy strona jest stroną postów


18

Na stronie Ustawienia czytania możesz ustawić „Stronę początkową” i „Stronę postów”. Możesz sprawdzić, czy bieżąca stronais_front_page();

Czy istnieje podobna funkcja dla „Strony postów”. Zauważyłem, że is_page();to nie działa na tej specjalnej stronie.

Dzięki

Odpowiedzi:


34

is_home() sprawdza „Stronę postów”, pomimo nieco mylącej nazwy funkcji.


dzięki, myślałem, że sprawdziłem je wszystkie, ale chyba nie ...
Mike,

3
Co $wp_query->is_posts_page?
Weston Ruter

@WestonRuter ma poprawną odpowiedź na pytanie.
J

6

Wordpress zawiera 7 podstawowych typów stron szablonów, które można określić w ten sposób

if ( is_main_query() ) {
    // Error
    if ( is_404() ) {
        ;
    }
    // Front page
    if ( is_front_page() ) {
        ;
    }
    // Archive
    if ( is_archive() ) {
        ;
    }
    // Comments popup
    if ( is_comments_popup() ) {
        ;
    }
    // Search
    if ( is_search() ) {
        ;
    }
    // Singular
    if ( is_singular() ) {
        ;
    }
    // Home - the blog page
    if ( is_home() ) {
        ;
    }
}

is_home mówi ci, że masz stronę bloga.


1

„Strona postów” to zazwyczaj archiwum:

  • posty kategorii
  • posty tagu
  • posty z datą (rok, miesiąc ...)
  • posty głównego archiwum

Każdy z nich można sprawdzić za pomocą jednego z wielu tagów warunkowych, takich jak is_category() is_tag() is_date() is_archive() I wiele innych. Aby lepiej zrozumieć, przejdź do kodeksu http://codex.wordpress.org/Conditional_Tags


0

Najpierw sprawdź blogi związane z autorami, tagami, typami postów

function is_blog () {
        global  $post;
        $posttype = get_post_type($post );
        return ( ((is_archive()) || (is_author()) || (is_category()) || (is_home()) || (is_single()) || (is_tag())) && ( $posttype == 'post')  ) ? true : false ;
  }

Teraz sprawdź i zwróć coś, co chcesz mieć

function check_post_type(){
    $postType;
    if (is_blog())
      {
         $postType = 'I am post';
      } else
       {
          $postType = 'I am page';
       };
    return $postType;
  }

Używaj go jak szefa <?php echo check_post_type();?>

Dzięki Wes Bos


0

TL; DR

Przypadek A . Nie ma potrzeby określania go w głównym pliku szablonu (index.php), ponieważ jest to szablon domyślny [1] .

Przypadek B . Aby ustalić go w szablonie strony (np. Page.php), po prostu zaznacz go w następujący sposób:

get_option( 'page_for_posts' ) == get_the_ID()

Detale

Dosłownie zacząłem kopać jego kod źródłowy [2] tylko po to, aby wiedzieć, w jaki sposób wordpress sprawdza sprawdzanie wartości. Okazuje się, że używa instrukcji, get_option( 'page_for_posts' )aby znać identyfikator posta wybranej wartości strony postów .

Tak, w tym celu nie ma takiej oficjalnej funkcji sprawdzania, która byłaby podobna do is_front_page().

Jeśli znasz identyfikator wybranej strony, możesz go używać do sprawdzania.

Bibliografia

  1. WordPress Codex, Theme Development, codex.wordpress.org/Theme_Development

  2. Kod źródłowy ustawieńUstawienia czytania , github.com/WordPress/.../wp-admin/options-reading.php

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.