ฉันใหม่กับ WordPress ฉันกำลังมองหาวิธีการตรวจสอบว่าหน้าปัจจุบันเป็นหน้าบล็อกในรหัสของไฟล์ส่วนหัว
ฉันตรวจสอบแล้ว แต่หาทางไม่พบ โปรดช่วยฉันด้วย
ฉันใหม่กับ WordPress ฉันกำลังมองหาวิธีการตรวจสอบว่าหน้าปัจจุบันเป็นหน้าบล็อกในรหัสของไฟล์ส่วนหัว
ฉันตรวจสอบแล้ว แต่หาทางไม่พบ โปรดช่วยฉันด้วย
คำตอบ:
หาก ' บล็อกหน้า ' หมายถึงชุดหน้าสแตติกเป็นหน้าโพสต์ในการตั้งค่าการอ่านคุณสามารถตรวจสอบได้โดยทำสิ่งนี้:
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
}
คุณสามารถใช้สิ่งต่อไปนี้ในไฟล์ 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 ของคุณเพื่อขอด้านบนเพื่อทำให้มันปรากฏบนทุกหน้า
หากตาม 'หน้าบล็อก' คุณหมายถึงหน้าคงที่ตั้งเป็นหน้าโพสต์ในการอ่าน:
global $wp_query;
if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
//static blog page
}
PS โซลูชันนี้ยังทำงานกับการกระทำของtemplate_redirect
global $wp_query
) แต่ยังเพราะมันไม่ตอบคำถามอย่างเต็มที่ มันเป็นฟังก์ชั่น แต่ OP ถามวิธีทำงานในไฟล์ส่วนหัวของเขา - ดังนั้นมันอาจต้องการคำอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับสิ่งที่จะต้องทำ ยินดีต้อนรับคุณอีกครั้งที่นี่!
เพื่อให้ได้หน้าดัชนีบล็อกฉันพบว่า
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
}
มีวิธีการที่ยุ่งยาก
สมมติว่ากระสุนของหน้าบล็อกของคุณคือblog
คุณสามารถใช้รหัสนี้
global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}
หน้าแรก
if(is_home() && is_front_page() || is_front_page()): // static or default hompage
...
endif;
บล็อก
if(is_home() && !is_front_page()): // blog
...
endif;
ฉันเดาว่ามันง่ายมากฉันอยู่ในสถานการณ์เดียวกันและฉันใช้เทคนิคต่อไปนี้ซึ่งจะใช้กระสุนหน้า
if( is_page('blog') ) {
echo "This is your blog page";
}
แต่ให้แน่ใจว่าคุณไม่ได้เลือกโฮมเพจเพื่อแสดงโพสต์บล็อกล่าสุดและคุณได้ตั้งค่าหน้าเว็บเฉพาะสำหรับบล็อกเช่นบล็อกหรือข่าว ฯลฯ เพียงใช้กระสุนหน้านั้นและคุณจะไม่เป็นอะไร
คุณสามารถใช้ได้..
<?php if ( is_single() ) { ?>
Do stuff here
<?php } ?>
เพื่อตรวจสอบว่ามันเป็นบล็อกโพสต์เดียว หรือ...
<?php if ( is_home() ) { ?>
Do stuff here
<?php } ?>
เพื่อตรวจสอบว่าเป็นหน้าแรกของบล็อกหรือไม่
ฉันใช้วิธีนี้
// Get body classes as array
$body_classes = get_body_class();
// Check if "blog" class exists in the array
if(in_array("blog", $body_classes)) {
// Do stuff
}
if ( !is_front_page() && is_home() )
อย่างน้อยในความคิดของฉันคือถ้าคุณกำลังกระจายรูปแบบที่มีสไตล์รูปแบบที่แตกต่างกันสำหรับที่หน้าแรกเริ่มต้นและหน้าบล็อก