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


23

Tôi thấy đoạn mã sau rất nhiều trong các tệp index.php. Tôi hiểu rằng is_front_page()trả về true khi xem Trang trước của Trang (cho dù hiển thị chỉ mục bài đăng trên blog hoặc trang tĩnh), trong khi is_home()trả về đúng khi xem Chỉ mục Bài đăng trên Blog (cho dù được hiển thị trên trang trước hoặc trên trang tĩnh). Tôi vẫn còn hơi bối rối về việc sử dụng mã sau đây -

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

Bất kỳ lời giải thích tại sao đoạn mã này rất phổ biến được đánh giá rất cao.

Câu trả lời:


15

Điều này sẽ hiển thị tiêu đề của trang khi một trang tĩnh được đặt để hiển thị bài viết.

Ví dụ

Tôi hiển thị các bài đăng trên trang chủ của mình ... Nó sẽ không làm gì cả.

Nếu tôi, giả sử, hiển thị các bài đăng trên trang có tiêu đề Tin tức ... Nó sẽ hiển thị Tin tức trong H1.

Điều này được sử dụng để tiêu đề của trang được hiển thị, bất cứ khi nào bài viết được hiển thị trên một trang, nhưng không có gì khi bài viết blog được hiển thị trên trang đầu (trang chủ).

Chúng tôi làm điều đó bởi vì nếu nó trên trang chủ ... nó sẽ hiển thị tiêu đề của bài đăng đầu tiên, làm cho nó xuất hiện hai lần (một lần ở đầu trong H1 và một lần nữa khi các bài đăng được lặp qua).


Cảm ơn bạn Shramee. Tôi đã tìm thấy tiêu đề của trang chỉ mục blog của mình trong <h1> khi cố gắng tìm ra nó nhưng nó không thực sự xuất hiện ở bất cứ đâu. Tôi nghĩ rằng một số chủ đề chỉ sử dụng nó để giúp mọi người sử dụng trình đọc màn hình, sau đó ẩn văn bản thực tế, điều này hơi khó hiểu cho người mới nếu nó không được bình luận / ghi lại.
olliew

Chà ... Nó giúp biết được những bài đăng ngữ cảnh nào được sử dụng, (như trong ví dụ trên cho Tin tức) nhưng chủ yếu là để SEO , H1 đóng vai trò lớn trong việc giúp các bot tìm kiếm hiểu nội dung trang tốt hơn.
shramee

26

Đây là cách làm đúng:

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

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

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

Đây là cách duy nhất (phải) để hiển thị hoặc thay đổi nội dung với trang chủ và trang blog của bạn.


4

Tôi không chắc chắn về "phổ biến", nó dường như không như vậy đối với tôi (nhưng sau đó tôi không nhìn vào nhiều chủ đề đó).

Bạn dường như nắm bắt tốt những gì mỗi điều kiện làm, vì vậy điều này không gây nhầm lẫn cho bạn. Điều này kết hợp các điều kiện để kiểm tra xem chỉ mục blog đang được hiển thị không ở trang đầu.

Ah, lý do single_post_title()tôi đoán là nó hiển thị tiêu đề cho $wp_query->queried object(được thiết lập bởi truy vấn chính là bối cảnh hiện tại), chứ không phải $posttoàn cầu (được thiết lập bởi vòng lặp lặp).

Trong một số trường hợp, những điều này sẽ giống nhau, nhưng không phải trong trường hợp như kiểm tra điều kiện. Vòng lặp sẽ chứa các bài đăng , nhưng đối tượng được truy vấn sẽ là trang (trừ khi tôi trộn mọi thứ lên :).


Gần đây tôi đã xem qua vô số các mẫu và nó rất phổ biến. Bạn nói đúng rằng tôi hiểu những gì vòng lặp đang làm, tôi chỉ không hiểu tại sao mọi người lại chọn làm theo cách đặc biệt này. Tại sao nên sử dụng single_post_title chứ không phải the_title ()?
olliew
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.