Sayfanın Yayınlar Sayfası olup olmadığını belirleme


18

On Okuma Ayarları sayfasında bir "Ön Sayfa" ve "Mesajlar Sayfası" ayarlayabilirsiniz. Geçerli sayfanınis_front_page();

"Yayınlar Sayfası" için benzer bir işlev var mı? is_page();Bu özel sayfa için işe yaramadığını fark ettim .

Teşekkürler

Yanıtlar:


34

is_home() kafa karıştırıcı işlev adına rağmen "Yayınlar Sayfasını" kontrol eder.


teşekkürler, hepsini kontrol ettim, ama
sanmıyorum

3
Ne olmuş $wp_query->is_posts_page?
Weston Ruter

@WestonRuter soruya doğru cevabı veriyor.
J

6

Wordpress, bu şekilde belirlenebilen 7 ana şablon sayfası türü ile birlikte gelir

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 size blog sayfanız olduğunu söyler.


1

"Yayınlar sayfası" genellikle aşağıdakilerin bir arşividir:

  • bir kategorinin gönderileri
  • bir etiketin gönderileri
  • bir tarihin gönderileri (yıl, ay ...)
  • ana arşiv mesajları

Bunların her biri, is_category() is_tag() is_date() is_archive() Ve çok daha fazlası gibi birçok koşullu etiketten biri tarafından kontrol edilebilir . Daha iyi anlaşılması için http://codex.wordpress.org/Conditional_Tags kodeksine gidin.


0

Öncelikle blogları yazar, etiket, yazı türü gibi şeylerle kontrol edin

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 ;
  }

Şimdi sahip olmak istediğiniz bir şeyi kontrol edin ve geri gönderin

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

Patron gibi kullan <?php echo check_post_type();?>

Wes Bos'a teşekkürler


0

TL; DR

Durum A . Ana şablon dosyasının (index.php) içinde belirlenmesine gerek yoktur, çünkü bunun için varsayılan şablondur [1] .

Durum B . Sayfa şablonunda belirlemek için (ör: sayfa.php), şöyle kontrol edin:

get_option( 'page_for_posts' ) == get_the_ID()

ayrıntılar

Kelimenin tam anlamıyla wordpress değerinin kontrolünü nasıl yaptığını bilmek için kaynak kodunu [2] kazmaya gittim . Görünüşe get_option( 'page_for_posts' )göre, Mesajlar sayfasının seçilen değerinin posta kimliğini bilmek için ifadeyi kullanıyor .

Yani evet, bu amaçla, benzer bir resmi denetleyici işlevi yoktur is_front_page().

Seçtiğiniz sayfanın kimliğini bildiğiniz sürece, bunu kontrol işlemi için kullanabilirsiniz.

Referanslar

  1. WordPress Kodeksi, Tema Geliştirme, codex.wordpress.org/Theme_Development

  2. Ayarların kaynak kodu › Okuma Ayarları , github.com/WordPress/.../wp-admin/options-reading.php

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.