พิจารณาว่าหน้านี้เป็นหน้าโพสต์หรือไม่


18

ในหน้าการตั้งค่าการอ่านคุณสามารถตั้งค่า "หน้าแรก" และ "หน้าโพสต์" คุณสามารถตรวจสอบว่าหน้าปัจจุบันis_front_page();

มีฟังก์ชั่นที่คล้ายกันสำหรับ "หน้าโพสต์" หรือไม่ ฉันสังเกตเห็นว่าis_page();มันใช้ไม่ได้กับหน้าพิเศษนี้

ขอบคุณ

คำตอบ:


34

is_home() ตรวจสอบ "หน้าโพสต์" แม้จะมีชื่อฟังก์ชั่นที่ค่อนข้างสับสน


ขอบคุณฉันคิดว่าฉันจะตรวจสอบพวกเขาทั้งหมด แต่ฉันเดาไม่ได้ ...
ไมค์

3
เกี่ยวกับ$wp_query->is_posts_pageอะไร
Weston Ruter

@WestonRuter มีคำตอบที่ถูกต้องสำหรับคำถาม
The J

6

Wordpress มาพร้อมกับหน้าประเภทเทมเพลตหลัก 7 ประเภทซึ่งสามารถกำหนดได้ด้วยวิธีนี้

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 บอกคุณว่าคุณมีหน้าบล็อก


1

"หน้าโพสต์" มักจะเป็นที่เก็บถาวรของ:

  • โพสต์ของหมวดหมู่
  • โพสต์ของแท็ก
  • โพสต์ของวันที่ (ปีเดือน ... )
  • โพสต์ของไฟล์เก็บถาวรหลัก

แต่ละแท็กเหล่านี้สามารถตรวจสอบได้โดยหนึ่งในแท็กที่มีเงื่อนไขหลายอย่างเช่น is_category() is_tag() is_date() is_archive() และอีกมากมาย หากต้องการทำความเข้าใจให้ดีขึ้นให้ไปที่http://codex.wordpress.org/Conditional_Tags


0

ก่อนอื่นให้ตรวจสอบบล็อกที่เกี่ยวข้องกับสิ่งต่างๆเช่นผู้แต่งแท็กประเภทโพสต์

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

ตอนนี้ตรวจสอบและส่งคืนสิ่งที่คุณต้องการ

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

ใช้มันเหมือนบอส <?php echo check_post_type();?>

ขอบคุณWes Bos


0

TL; DR

กรณี A ไม่จำเป็นต้องมีการกำหนดไว้ในแฟ้มแม่แบบหลัก (index.php) เป็นเพราะมันเป็นแม่แบบเริ่มต้นของมัน[1]

กรณี B หากต้องการกำหนดภายในเทมเพลตหน้า (เช่น: page.php) เพียงตรวจสอบดังนี้:

get_option( 'page_for_posts' ) == get_the_ID()

รายละเอียด

แท้จริงฉันไปขุดซอร์สโค้ด[2]ของมันเพียงเพื่อให้สามารถรู้ว่า wordpress ทำการตรวจสอบค่า มันจะเปิดออกจะใช้คำสั่งget_option( 'page_for_posts' )ที่จะรู้รหัสโพสต์ของค่าที่เลือกของหน้าโพสต์

is_front_page()เพื่อใช่สำหรับวัตถุประสงค์นี้ไม่มีฟังก์ชั่นการตรวจสอบดังกล่าวอย่างเป็นทางการที่คล้ายกับ

ตราบใดที่คุณทราบ ID ของหน้าเว็บที่คุณเลือกจากนั้นคุณสามารถใช้มันสำหรับกระบวนการตรวจสอบ

อ้างอิง

  1. WordPress Codex, การพัฒนาธีม, codex.wordpress.org/Theme_Development

  2. ซอร์สโค้ดของการตั้งค่า > การตั้งค่าการอ่าน , github.com/WordPress/.../wp-admin/options-reading.php

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.