ตรวจสอบว่าหน้าปัจจุบันคือหน้าบล็อก


33

ฉันใหม่กับ WordPress ฉันกำลังมองหาวิธีการตรวจสอบว่าหน้าปัจจุบันเป็นหน้าบล็อกในรหัสของไฟล์ส่วนหัว

ฉันตรวจสอบแล้ว แต่หาทางไม่พบ โปรดช่วยฉันด้วย

คำตอบ:


42

หาก ' บล็อกหน้า ' หมายถึงชุดหน้าสแตติกเป็นหน้าโพสต์ในการตั้งค่าการอ่านคุณสามารถตรวจสอบได้โดยทำสิ่งนี้:

if ( is_front_page() && is_home() ) {
  // Default homepage
} elseif ( is_front_page() ) {
  // static homepage
} elseif ( is_home() ) {
  // blog page
} else {
  //everyting else
}

เมื่อคุณใช้is_home()และis_front_page()คุณจะต้องใช้มันใน ลำดับที่ถูกต้องเพื่อหลีกเลี่ยงข้อบกพร่องและเพื่อทดสอบการกำหนดค่าของผู้ใช้ทุกคน

(ที่มา: แท็กเงื่อนไข - หน้าบล็อก )

หรือเพียงแค่:

if ( !is_front_page() && is_home() ) {
  // blog page
}

หรือมากกว่านั้น (ฉันคิดว่า):

if ( is_home() ) {
  // blog page
}

หนึ่งกรณีใช้กับการใช้งานif ( !is_front_page() && is_home() )อย่างน้อยในความคิดของฉันคือถ้าคุณกำลังกระจายรูปแบบที่มีสไตล์รูปแบบที่แตกต่างกันสำหรับที่หน้าแรกเริ่มต้นและหน้าบล็อก
Giraldi

ฉันค้นหา is_front_page () จะคืนค่าจริงไม่ว่าจะเลือกที่เก็บถาวรบล็อกหรือหน้าใด ต้องการการตรวจสอบ codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

คุณสามารถใช้สิ่งต่อไปนี้ในไฟล์ themes.php ของคุณ themes:

function is_blog () {
    return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}

จากนั้นใส่สิ่งนี้ลงในไฟล์ที่คุณกำลังตรวจสอบ:

<?php if (is_blog()) { echo 'You are on a blog page'; } ?>

คุณสามารถใช้ hooks ในไฟล์ functions.php ของคุณเพื่อขอด้านบนเพื่อทำให้มันปรากฏบนทุกหน้า


1
นี่คือคำตอบที่ดีถ้าคุณต้องการที่จะตรวจสอบว่าคุณอยู่ในหน้าบล็อก แต่ไม่ neccessarily หน้าบล็อก (ในขณะที่หน้าบล็อกแรก) ดูคำตอบของ @ Giraldi สำหรับสิ่งนั้น
ทิมมาโลน

ฉันถือว่าไม่ถูกต้อง is_blog () มีอยู่เพราะ is_page () มีอยู่ มันไม่ได้เกิดขึ้นกับผมที่จะให้คำปรึกษาอย่างเป็นทางการ WordPress เงื่อนไขดัชนีแท็ก ฉันสามารถใช้โซลูชันนี้ได้อย่างมีประสิทธิภาพโดยใช้ปลั๊กอิน Widget Logic
Clarus Dignus

11

หากตาม 'หน้าบล็อก' คุณหมายถึงหน้าคงที่ตั้งเป็นหน้าโพสต์ในการอ่าน:

global $wp_query;

if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
    //static blog page
}

PS โซลูชันนี้ยังทำงานกับการกระทำของtemplate_redirect


สวัสดี repinsa ยินดีต้อนรับสู่ WPSE :) ขอบคุณที่เพิ่มคำตอบของคุณ มันได้รับการลงคะแนนเล็กน้อยอาจเป็นเพราะมีข้อผิดพลาดทางไวยากรณ์ในรหัส (ไม่มีเครื่องหมายอัฒภาคหลังจากglobal $wp_query) แต่ยังเพราะมันไม่ตอบคำถามอย่างเต็มที่ มันเป็นฟังก์ชั่น แต่ OP ถามวิธีทำงานในไฟล์ส่วนหัวของเขา - ดังนั้นมันอาจต้องการคำอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับสิ่งที่จะต้องทำ ยินดีต้อนรับคุณอีกครั้งที่นี่!
ทิมมาโลน

2
นั่นเป็นคำตอบเดียวที่ดีจริง ๆ ควรมี upvotes มากกว่านี้
Lacho Tomov

2

เพื่อให้ได้หน้าดัชนีบล็อกฉันพบว่า

if ( !is_front_page() && is_home() ) {
  // blog page
}

ไม่ทำงานสำหรับฉันฉันต้องใช้ฟังก์ชั่น get_option ('page_for_posts') เพื่อระบุหน้าโพสต์บล็อก post_id คำตอบของฉันคือ

if ( !is_front_page() && is_home() ){  

    if ( empty ( $post_id) ) {
        global $post;
        $post_id =  get_option( 'page_for_posts' );
    }

    //blog page
}

0

มีวิธีการที่ยุ่งยาก

http://example.com/blog

สมมติว่ากระสุนของหน้าบล็อกของคุณคือblogคุณสามารถใช้รหัสนี้

global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}

0

หน้าแรก

if(is_home() && is_front_page() || is_front_page()): // static or default hompage
 ...
endif;

บล็อก

if(is_home() && !is_front_page()): // blog
 ...
endif;

0

ฉันเดาว่ามันง่ายมากฉันอยู่ในสถานการณ์เดียวกันและฉันใช้เทคนิคต่อไปนี้ซึ่งจะใช้กระสุนหน้า

if( is_page('blog') ) {
echo "This is your blog page"; 
}

แต่ให้แน่ใจว่าคุณไม่ได้เลือกโฮมเพจเพื่อแสดงโพสต์บล็อกล่าสุดและคุณได้ตั้งค่าหน้าเว็บเฉพาะสำหรับบล็อกเช่นบล็อกหรือข่าว ฯลฯ เพียงใช้กระสุนหน้านั้นและคุณจะไม่เป็นอะไร


0

คุณสามารถใช้ได้..

<?php if ( is_single() ) { ?>

Do stuff here

<?php } ?>

เพื่อตรวจสอบว่ามันเป็นบล็อกโพสต์เดียว หรือ...

<?php if ( is_home() ) { ?>

Do stuff here

<?php } ?>

เพื่อตรวจสอบว่าเป็นหน้าแรกของบล็อกหรือไม่


2
ไม่ทำงานหากคุณเปลี่ยนหน้าบล็อก
cdmckay

นี่ไม่ได้ให้คำตอบที่ถูกต้องกับ OP ข้อความนี้ระบุว่าคุณอยู่ในโพสต์เดียวไม่ใช่ "หน้าบล็อก"
butlerblog

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