Xác định xem trang có phải là Trang bài viết không


18

Trên trang Cài đặt Đọc, bạn có thể đặt "Trang trước" và "Trang bài viết". Bạn có thể kiểm tra xem trang hiện tạiis_front_page();

Có một chức năng tương tự cho "Trang bài viết". Tôi đã nhận thấy rằng is_page();không hoạt động cho trang đặc biệt này.

Cảm ơn

Câu trả lời:


34

is_home() kiểm tra "Trang bài viết", mặc dù tên hàm hơi khó hiểu.


cảm ơn, tôi nghĩ rằng tôi đã kiểm tra tất cả, nhưng tôi đoán là không ...
mike

3
Thế còn $wp_query->is_posts_page?
Weston Ruter

@WestonRuter có câu trả lời chính xác cho câu hỏi.
J

6

Wordpress đi kèm với 7 loại trang mẫu chính, có thể được xác định theo cách này

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 nói với bạn rằng bạn có trang blog.


1

"Trang bài viết" thường là một kho lưu trữ của:

  • bài viết của một thể loại
  • bài viết của một thẻ
  • bài viết của một ngày (năm, tháng ...)
  • bài viết của kho lưu trữ chính

Mỗi một trong số này có thể được kiểm tra bởi một trong nhiều thẻ có điều kiện như is_category() is_tag() is_date() is_archive() Và nhiều hơn nữa. Để hiểu rõ hơn, hãy truy cập vào codex http://codex.wordpress.org/Conditable_Tags


0

Trước tiên hãy kiểm tra các blog liên quan như tác giả, thẻ, loại bài đăng

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

Bây giờ hãy kiểm tra và trả lại thứ bạn muốn có

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

Sử dụng nó như ông chủ <?php echo check_post_type();?>

Cảm ơn Wes Bos


0

TL; DR

Trường hợp A . Không cần xác định nó bên trong tệp mẫu chính (index.php) vì đây là mẫu mặc định cho nó [1] .

Trường hợp B . Để xác định nó bên trong một mẫu trang (ví dụ: page.php), chỉ cần kiểm tra nó như vậy:

get_option( 'page_for_posts' ) == get_the_ID()

Chi tiết

Tôi thực sự đã đi đào mã nguồn [2] của nó chỉ để có thể biết cách kiểm tra giá trị của wordpress. Hóa ra, nó đang sử dụng câu lệnh get_option( 'page_for_posts' )để biết ID bài đăng của giá trị được chọn của trang Bài viết .

Vì vậy, yeah, cho mục đích này, không có chức năng kiểm tra chính thức như vậy tương tự như is_front_page().

Miễn là bạn biết ID của trang bạn đã chọn thì bạn có thể sử dụng nó cho quá trình kiểm tra.

Tài liệu tham khảo

  1. Codex WordPress, Phát triển chủ đề, codex.wordpress.org/Theme_Development

  2. Mã nguồn của Cài đặt > Reading Cài đặt , github.com/WordPress/.../wp-admin/options-reading.php

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.