Kiểm tra xem trang hiện tại có phải là Trang Blog không


33

Tôi mới dùng WordPress. Tôi đang tìm cách để kiểm tra xem trang hiện tại có phải là trang blog trong mã của tệp tiêu đề hay không.

Tôi đã kiểm tra nhưng tôi không thể tìm ra cách. Giúp tôi với, xin vui lòng.

Câu trả lời:


42

Nếu bằng ' trang blog ', bạn có nghĩa là một trang tĩnh được đặt làm trang bài đăng trong Cài đặt Đọc , thì bạn có thể kiểm tra nó bằng cách thực hiện điều này:

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

Khi bạn sử dụng is_home()is_front_page(), bạn phải sử dụng chúng theo đúng thứ tự để tránh lỗi và kiểm tra mọi cấu hình người dùng.

(Nguồn: Thẻ có điều kiện - Trang Blog )

Hoặc đơn giản:

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

Hoặc đơn giản hơn (tôi cho là):

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

Theo tôi, một trường hợp sử dụng if ( !is_front_page() && is_home() )ít nhất là nếu bạn đang phân phối một chủ đề có kiểu bố cục khác cho trang chủ mặc địnhtrang blog .
Giraldi

Tôi đang tìm is_front_page () sẽ trả về đúng cho dù kho lưu trữ blog hay trang được chọn. Cần xác minh. codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

Bạn có thể sử dụng các mục sau trong tệp tin.php.

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

Và sau đó đặt nó trong tập tin bạn đang kiểm tra:

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

Bạn có thể sử dụng Móc trong tệp tin.php của mình để móc ở trên, để làm cho nó xuất hiện trên mỗi trang.


1
Đây là một câu trả lời tuyệt vời nếu bạn muốn xác định xem bạn đang ở trên một trang blog, nhưng không nhất thiết phải trang blog (như trong trang chủ blog). Xem câu trả lời của @ Giraldi cho điều đó.
Tim Malone

Tôi giả định không chính xác is_blog () tồn tại vì is_page () tồn tại. Tôi đã không tham khảo Chỉ số thẻ có điều kiện WordPress chính thức . Tôi đã có thể áp dụng hiệu quả giải pháp này bằng cách sử dụng plugin Widget Logic.
Clarus Dignus

11

Nếu theo 'trang blog', bạn có nghĩa là một trang tĩnh được đặt làm trang bài đăng trong phần Đọc:

global $wp_query;

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

Tái bút Giải pháp này cũng hoạt động trên hành động template_redirect


Xin chào repinsa, chào mừng bạn đến với WPSE :) Cảm ơn bạn đã thêm câu trả lời của bạn. Nó đã được bỏ phiếu xuống một chút, có lẽ vì nó có lỗi cú pháp trong mã (nó thiếu dấu chấm phẩy sau global $wp_query) nhưng cũng vì nó không trả lời đầy đủ câu hỏi. Đó là một chức năng, nhưng OP đã hỏi làm thế nào để giải quyết vấn đề này trong tệp tiêu đề của mình - vì vậy nó có thể cần thêm một chút giải thích về những gì cần đặt ở đâu. Một lần nữa, chào mừng, vui mừng khi có bạn ở đây!
Tim Malone

2
Đó thực sự là câu trả lời tốt duy nhất ở đây, lẽ ra phải có nhiều sự ủng hộ hơn.
Lacho Tomov

2

Để có được trang chỉ mục blog , tôi thấy rằng

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

không hoạt động với tôi, tôi đã phải sử dụng hàm get_option ('page_for_posts') để xác định trang Blog post_id, câu trả lời của tôi là

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

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

    //blog page
}

0

Có một phương pháp khó khăn.

http://example.com/blog

Giả sử nếu sên trang blog của bạn là blog, bạn có thể sử dụng mã này.

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

0

TRANG CHỦ

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

BLOG

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

0

Tôi đoán nó rất đơn giản Tôi đã ở trong một tình huống tương tự và tôi đã sử dụng kỹ thuật sau đây là sử dụng sên trang.

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

Nhưng hãy chắc chắn rằng bạn không chọn trang chủ để hiển thị các bài đăng trên blog gần đây và bạn đã đặt một trang cụ thể cho các blog như blog hoặc tin tức, v.v., chỉ cần sử dụng trang đó sên và bạn sẽ ổn.


0

Bạn có thể dùng..

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

Do stuff here

<?php } ?>

để kiểm tra nếu đó là một bài viết trên blog. Hoặc là...

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

Do stuff here

<?php } ?>

để kiểm tra xem đó có phải là trang chủ blog không


2
Không hoạt động nếu bạn đã thay đổi trang blog
cdmckay

Điều này không cung cấp câu trả lời chính xác cho OP. Điều này cho biết bạn đang ở trên một bài đăng, không phải "trang blog".
butlerblog

-1

Tôi dùng cách này

// 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
}
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.