检查当前页面是否为博客页面


33

我是WordPress的新手。我正在寻找一种检查头文件代码中当前页面是否为博客页面的方法。

我已经检查过,但找不到方法。帮帮我,请。

Answers:


42

如果“ 博客页面 ”是指在“ 阅读设置”中将静态页面设置为帖子页面,则可以通过执行以下操作进行检查:

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
}

if ( !is_front_page() && is_home() )至少在我看来,一个用例是,如果您要为默认主页博客页面分发具有不同布局样式的主题。
Giraldi 2014年

我发现无论是否选择博客存档或页面,is_front_page()都将返回true。需要验证。codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

您可以在主题functions.php文件中使用以下内容:

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

您可以在functions.php文件中使用Hooks来挂钩上述内容,以使它显示在每个页面上。


1
这是一个伟大的答案,如果你想确定你是在一个博客页面,而不是neccessarily 博客页面(如博客主页)。参见@Giraldi的答案。
蒂姆·马隆

我错误地认为is_blog()存在,因为is_page()存在。我没有想到要查阅官方的WordPress条件标签索引。我能够使用Widget Logic插件有效地应用此解决方案。
Clarus Dignus

11

如果“博客页面”是指在阅读中将静态页面设置为帖子页面:

global $wp_query;

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

PS。此解决方案也适用于template_redirect动作


嗨,repinsa,欢迎来到WPSE :)感谢您添加答案。它被否决了,可能是因为它在代码中存在语法错误(在后面缺少分号global $wp_query),还因为它没有完全回答问题。这是一个函数,但是OP在他的头文件中询问如何解决这个问题-因此可能需要更多关于放置位置的解释。再次欢迎您,很高兴有您在这里!
蒂姆·马隆

2
实际上,这是唯一的好答案,应该有更多的支持。
Lacho Tomov '17

2

要获得博客索引页面,我发现

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
}


0

主页

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

博客

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

0

我猜很简单,我处在相同的情况下,我使用了以下技术来使用页塞。

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

但是请确保您没有选择主页来显示最近的博客文章,并且已为博客或新闻等博客设置了特定页面,只需使用该页面标签,就可以了。


0

您可以使用..

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

Do stuff here

<?php } ?>

检查它是否是单个博客文章。要么...

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

Do stuff here

<?php } ?>

检查是否是博客主页


2
如果您更改了博客页面
无法使用

这不能为OP提供正确的答案。这表明您在单个帖子上,而不是“博客页面”。
butlerblog

-1

我用这种方式

// 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
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.