我已经检查过,但找不到方法。请帮助我。
#1 楼
如果“博客页面”是指在“阅读设置”中将静态页面设置为帖子页面,则可以通过以下操作对其进行检查: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
}
#2 楼
您可以在主题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挂钩以上内容,以使其出现在每个页面上。
评论
如果您想确定自己是否在博客页面上,而不必在博客页面上(例如在博客主页中),则这是一个很好的答案。参见@Giraldi的答案。
–蒂姆·马隆(Tim Malone)
16年4月17日在22:04
我错误地认为is_blog()存在,因为is_page()存在。我没有想到要查阅官方的WordPress条件标签索引。我能够使用Widget Logic插件有效地应用此解决方案。
– Clarus Dignus
19年4月14日在12:34
#3 楼
如果使用“博客页面”,则表示在阅读中将静态页面设置为帖子页面:global $wp_query;
if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
//static blog page
}
PS。此解决方案也适用于template_redirect操作
评论
嗨,repinsa,欢迎来到WPSE :)感谢您添加答案。它被否决了,可能是因为它在代码中存在语法错误(在全局$ wp_query之后丢失了分号),还因为它没有完全回答问题。这是一个函数,但是OP在他的头文件中询问如何解决这个问题-因此可能需要更多关于放置位置的解释。再次欢迎您,很高兴有您在这里!
–蒂姆·马隆(Tim Malone)
16年4月17日在22:07
实际上,这是唯一的好答案,应该有更多的支持。
– Tomov
17年12月23日在14:16
#4 楼
要获取博客索引页面,我发现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
}
#5 楼
有一个棘手的方法。http://example.com/blog
如果您的博客页面头文件是
blog
,则可以使用此代码。global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}
#6 楼
主页if(is_home() && is_front_page() || is_front_page()): // static or default hompage
...
endif;
博客
if(is_home() && !is_front_page()): // blog
...
endif;
#7 楼
我想我处于相同的情况下非常简单,我使用了以下技术来使用页面Slug。if( is_page('blog') ) {
echo "This is your blog page";
}
但是请确保您未选择主页以显示最近的博客文章,并且您已为博客(例如Blog或新闻)等博客设置了特定页面,只需使用该页面标签,就可以了。
#8 楼
您可以使用..<?php if ( is_single() ) { ?>
Do stuff here
<?php } ?>
检查它是否是单个博客文章。或者...
<?php if ( is_home() ) { ?>
Do stuff here
<?php } ?>
检查是否是博客主页
评论
如果您更改了博客页面,则不起作用
– cdmckay
2014年10月9日15:09
这不能为OP提供正确的答案。这表示您在单个帖子上,而不是“博客页面”上。
– Butlerblog
17年12月27日在14:29
#9 楼
我用这种方式// 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
}
评论
至少在我看来,使用if(!is_front_page()&& is_home())的一种用例是,如果您要为默认主页和博客页面分发具有不同布局样式的主题。
– Giraldi
2014年8月3日在7:03
我发现无论是否选择博客存档或页面,is_front_page()都将返回true。需要验证。 codex.wordpress.org/Function_Reference/is_front_page
– atwellpub
17年5月28日在0:32