这几天一直在晚上抽空给站点主题改版,即将完成之后发现某些问题,如侧边栏某些widget不按照需求显示、评论无法ajax提交等,在查找中发现,原来是因为if(is_home())等判断函数失效,由于这次主题定制的东西比较多,多次用到query_posts(),所以导致该判断失效。

解决方案

在 if ( is_home()之前加一个 wp_reset_query(),如下:

<?php wp_reset_query(); if ( is_home()) { ?>
    ...
<?php } ?>

如此一般便可以解决该问题了。做个备忘。

常用函数

以下是主题制作中常用到的几个判断页面的函数:

is_home() : 是否为主页
is_single() : 是否为内容页(Post)
is_page() : 是否为内容页(Page)
is_category() : 是否为Category/Archive页
is_tag() : 是否为Tag存档页
is_date() : 是否为指定日期存档页
is_year() : 是否为指定年份存档页
is_month() : 是否为指定月份存档页
is_day() : 是否为指定日存档页
is_time() : 是否为指定时间存档页
is_archive() : 是否为存档页
is_search() : 是否为搜索结果页
is_404() : 是否为 “HTTP 404: Not Found”错误页
is_paged() : 主页/Category/Archive页是否以多页显示
is_singular() : 相当于is_single()||is_page()||is_attachment()

完。