在一个函数中包含IS_HOME、IS_ARCHIVE、IS_CATEGORY、IS_AUTHER等的函数?

时间:2012-10-12 作者:jamie

我想有一种方法,只针对特定格式的博客区域页面。

目前为止

<?php if (is_home() || is_single() || is_category() || is_archive() ) { ?>
工作正常,但有没有办法将所有这些合并到一个函数中,以将其缩短一点?因此,在函数中,它可能会将\\u blog()设置为等于这四个(或任意多个)。

看起来有点简单,可能是。。。。我只是不知道要搜索什么才能找到这方面的信息。谢谢

3 个回复
最合适的回答,由SO网友:mousesports 整理而成

根据您的描述:

function is_blog()
{
    return ( is_home() || is_single() || is_category() || is_archive() );
}
然后只要在需要时调用is\\u blog()函数即可。

我还发现了这个,它看起来是做同样事情的更具体的方法https://gist.github.com/1189639

SO网友:kaiser

所有的is_*() »Conditional Tags« 是他们的包装is_* 全球吊坠$wp_query 对象它们都反映了»Template Hierarchy« 它确定应加载哪个文件(如果存在)以显示请求。

简而言之,以下是最一般的:

  • is_archive() 涵盖所有标签、分类、类别、帖子类型(帖子/页面/附件/链接/自定义帖子类型等)归档页面(还有is_post_type_archive() 将其锁定)
  • is_home()is_front_page() 基本上是相同的,但不同的是,它们区分了首页的显示设置:最新帖子和;静态首页
  • is_singular() 捕获所有“单一”视图,如页面、附件、帖子等is_search() 覆盖搜索结果页面is_404() 捕获所有内容。。。这并没有被捕捉到,所以根据这个列表,你应该能够包装好你需要的东西,这取决于你的“博客区域页面”是什么。

    作为一个小助手,您可以使用this answer that lists all conditionals that are true on a request. 这应该可以帮助你很快摆脱它。

    只需将其作为插件上传即可。完成后将其停用。

SO网友:Franzscisco Mai

使用PHP函数完成的更多功能可能包括strpo($\\u SERVER[\'REQUEST\\u URI\'],“blog”)

最终解决方案:

    function is_blog()
    {
        return ( is_home() || is_single() || is_category() || is_archive() || strpos($_SERVER[\'REQUEST_URI\'], "blog") );
    }

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php