ถ้า (is_home () &&! is_front_page ())


23

ฉันเห็นรหัสต่อไปนี้เป็นจำนวนมากในไฟล์ index.php ฉันเข้าใจว่าis_front_page()ผลตอบแทนจริงเมื่อดูหน้าเว็บไซต์ (ไม่ว่าจะแสดงดัชนีโพสต์บล็อกหรือหน้าคงที่) ในขณะที่is_home()ผลตอบแทนจริงเมื่อดูดัชนีโพสต์บล็อก (ไม่ว่าจะปรากฏในหน้าแรกหรือหน้าคงที่) ฉันยังคงนิ่งงันเกี่ยวกับการใช้รหัสต่อไปนี้ -

<?php if ( have_posts() ) : ?>

    <?php if ( is_home() && ! is_front_page() ) : ?>
        <header>
            <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
        </header>
    <?php endif; ?>

คำอธิบายใด ๆ ว่าทำไมโค้ดส่วนนี้จึงได้รับความนิยมมาก

คำตอบ:


15

สิ่งนี้จะแสดงชื่อของหน้าเมื่อตั้งค่าหน้าสแตติกเพื่อแสดงโพสต์

เช่น

ฉันแสดงโพสต์ในหน้าแรกของฉัน ... มันจะไม่ทำอะไรเลย

ถ้าฉันพูดแสดงโพสต์ในหน้าชื่อข่าว ... มันจะแสดงข่าวใน H1

สิ่งนี้ถูกใช้เพื่อให้ชื่อของหน้าถูกแสดงเมื่อใดก็ตามที่โพสต์แสดงบนหน้า แต่ไม่มีสิ่งใดเมื่อโพสต์บล็อกแสดงในหน้าแรก (โฮมเพจ)

เราทำเพราะหากอยู่ในหน้าแรก ... จะแสดงชื่อของโพสต์แรกทำให้ปรากฏสองครั้ง (ที่ด้านบนใน H1 และอีกครั้งเมื่อมีการโพสต์แบบวนซ้ำ)


ขอบคุณ Shramee ฉันพบชื่อของหน้าดัชนีบล็อกของฉันใน <h1> เมื่อพยายามคิดออก แต่จริง ๆ แล้วมันไม่ปรากฏที่ใดเลย ฉันคิดว่าผู้ใช้บางคนใช้เพื่อช่วยผู้ใช้โปรแกรมอ่านหน้าจอแล้วซ่อนข้อความจริงซึ่งค่อนข้างสับสนสำหรับมือใหม่หากไม่ได้แสดงความคิดเห็น / บันทึกไว้
olliew

ดี ... มันช่วยให้ทราบว่ามีการใช้โพสต์บริบทใด (เช่นในตัวอย่างด้านบนสำหรับข่าว) แต่ส่วนใหญ่มีไว้สำหรับSEO H1 มีบทบาทสำคัญในการช่วยให้บอทค้นหาเข้าใจเนื้อหาของหน้าเว็บได้ดีขึ้น
shramee

26

นี่คือวิธีการทำให้ถูกต้อง:

if ( is_front_page() && is_home() ) {
// Default homepage

} elseif ( is_front_page()){
// Static homepage

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

นี่เป็นวิธีเดียว (ขวา) ในการแสดงหรือแก้ไขเนื้อหาด้วยหน้าแรกและหน้าบล็อกของคุณ


4

ฉันไม่แน่ใจเกี่ยวกับ "ยอดนิยม" ดูเหมือนจะไม่เป็นเช่นนั้นสำหรับฉัน (แต่จากนั้นฉันไม่ได้ดูที่หลาย ๆ ธีม)

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

อ่าเหตุผลที่single_post_title()ฉันเดาก็คือมันแสดงชื่อสำหรับ$wp_query->queried object(ตั้งค่าตามข้อความค้นหาหลักเป็นบริบทปัจจุบัน) แทนที่จะเป็นแบบ$postทั่วโลก (ตั้งค่าโดยวนซ้ำ)

ในบางสถานการณ์สิ่งเหล่านี้จะเหมือนกัน แต่ไม่ใช่ในกรณีเช่นนี้เพื่อตรวจสอบสภาพ การวนซ้ำจะมีการโพสต์แต่วัตถุที่ถูกสอบถามจะเป็นหน้า (ยกเว้นว่าฉันกำลังผสมสิ่งต่างๆ :)


ฉันได้ดูเทมเพลตจำนวนมากเมื่อเร็ว ๆ นี้และเป็นเรื่องธรรมดามาก คุณพูดถูกว่าฉันเข้าใจสิ่งที่วนรอบกำลังทำอยู่ฉันแค่ไม่เข้าใจว่าทำไมผู้คนถึงเลือกทำแบบนี้ ทำไมต้องใช้ single_post_title มากกว่า the_title ()
olliew
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.