凉风有信,秋月无边。
亏我思娇的情绪好比度日如年。

wordpress判断首页is_home()为什么会失效,判断不出首页,或者判断到分类页了,解决方法!

《wordpress判断首页is_home()为什么会失效,判断不出首页,或者判断到分类页了,解决方法!》正文开始,本次阅读大概9分钟。

第一次写wordpress主题,就遇到is_home()判断失败!

第一种情况:

divclass=sidebar
?php
if(is_home()){
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_home)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置首页右侧栏内容。/span/div/div;
endif;
}elseif(is_category()){
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_cate)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置分类右侧栏内容。/span/div/div;
endif;
}elseif(is_single()||is_page()){
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_single)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置文章、页面右侧栏内容。/span/div/div;
endif;
}else{
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_cate)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置分类右侧栏内容。/span/div/div;
endif;
}
?
/div

上方代码判断侧栏是没有问题的吧?但是测试根本无法判断!

原因:

如果is_home()之前有个 query_posts(),则会让它本身判断失效。原因是 is_home() 函数在首页的时候会返回一个 true 来判断,而 query_posts()会阻断这一判断。

解决方案是在 is_home()之前加一个 wp_reset_query()。

解决方法:

if(is_home())

之前加入:

wp_reset_query();

整体修改就是:

divclass=sidebar
?php
wp_reset_query();	//新增
if(is_home()){
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_home)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置首页右侧栏内容。/span/div/div;
endif;
}elseif(is_category()){
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_cate)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置分类右侧栏内容。/span/div/div;
endif;
}elseif(is_single()||is_page()){
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_single)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置文章、页面右侧栏内容。/span/div/div;
endif;
}else{
if(function_exists(dynamic_sidebar)dynamic_sidebar(widget_sidebar_cate)):else:
echodivclass=widgetdivclass=textwidgeth3注意/h3spanstyle=color:#f00;请前往“后台-外观-小工具”设置分类右侧栏内容。/span/div/div;
endif;
}
?
/div

解决了!

第二种情况:

当你的首页不是默认的index.php的时候,而是在后台指定了一个page页面。这种情况下is_home()会失效,也就是说这样子的情况下就不能再用is_home()来判断。

is_front_page()是判断当前页是不是指定的首页,我们在上面描述的情况下需要的就是这个函数。

?phpif(is_home()||is_front_page()){?
我只会在首页显示
?php}?

ps:我在使用多站点wordpress进行二次开发时,需要所有的站点均指定一个page作为首页来显示;而且,该page作为首页显示时,页头还要显示一个banner图片。这就需要对所有theme主题的page.php文件内使用上述代码以判断是否首页。

赞(278)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的内容,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。本博客资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。如果本文导致的版权问题以及内容纠错问题请联系站长QQ:1004619 | 点此给我发送邮件
本文标题:wordpress判断首页is_home()为什么会失效,判断不出首页,或者判断到分类页了,解决方法!
本文地址:https://www.1004619.com/nn/wordpresspdsyishomewsmhsxpdbcs.html