判断 WordPress 文章是否归属特定分类

判断 WordPress 文章是否归属特定分类

作者 : 资源客 发布时间: 2019-11-25

我们在进行 wordpress 主题开发时,有时会遇到这样的要求,就是判断某些文章是否归属特定分类,那么就会用到函数:in_category() 这个函数,简单地说,in_category() 是一个布尔函数,作用是检查当前或者指定页面是否归属于某个指定的分类,通常用于给不同的分类目录设置不同的文章模板。

值得注意的是:in_category()考虑只有一篇文章的类别被直接分配(检查类别在写/编辑文章面板),而不是指定类别的父分类(请看下面的重点:如果一篇文章在后代分类下)。在循环内部,这个标签可以用来测试当前的文章;或在循环外的单篇文章请求。如果您指定你想要测试的那篇文章,可以在任何地方使用它。

用法

<?php in_category( $category, $_post ) ?>

参数

$category

(混合的)(必选的)一个或多个被指定分类 ID,分类别名或 slug,或一个数组。

默认: 无

$_post

(混合的)(可选的)文章,默认为在主循环内的当前文章或在主查询中的文章。

默认: 无
概述中已经说了这个函数是布尔函数,所以它返回的值要么是真(True),要么是假(False),某篇文章是否属于特定的分类。

举例

在循环内测试当前文章 in_category 函数通常用于主循环中,根据当前文章的类别采取不同的行动,例如:

< ?php
if ( in_category( 'internet' )) {
// 如果这篇文章属于internet分类,此处添加要执行的内容。
} elseif ( in_category( array( 'ec', 'tmt' ) )) {
// 如果这篇文章同时属于ec和tmt分类,此处添加要执行的内容。
} else {
// 添加默认动作,也可以不要。
}
?>

在循环外测试当前文章,如果你要实现一种功能,根据不同的分类调取不同的模板,不妨试试下面的这个示例:

< ?php
if (  in_category(1) ) {
include 'single-1.php';
} elseif ( in_category('ec') ) {
include 'single-ec.php';
} else {
include 'single-default.php';
}
?>

重点

测试如果一篇文章在后代分类下,这里要注意的是,in_category()函数只能指定一级目录,如果该目录有子孙目录则无效。如”fruits”下还有子目录’apples’, ‘bananas’, ‘cantaloupes’, ‘guavas’,则需全部目录列出来:

<?php if ( in_category( array( 'fruits', 'apples', 'bananas', 'cantaloupes', 'guavas' /*etc*/ ) )) {
    // These are all fruits
}
}
?>

但是每次你移去或添加任何水果类别,你都不得不编辑代码。更灵活的方法是使用或适应下面定义的 post_is_in_descendant_category 函数(在使用它之前,你需要复制下面的自定义函数到一个模板,插件,或主题函数文件):一般把此代码放入主题函数文件 functions.php

<?php
if ( ! function_exists( 'post_is_in_descendant_category' ) ) {
    function post_is_in_descendant_category( $cats, $_post = null ) {
        foreach ( (array) $cats as $cat ) {
            // get_term_children() accepts integer ID only
            $descendants = get_term_children( (int) $cat, 'category' );
            if ( $descendants && in_category( $descendants, $_post ) )
                return true;
        }
        return false;
    }
}
?>

然后可以跟 in_category()一起使用,调用 post_is_in_descendant_category()函数来指定某目录下的所有子孙目录的文章页都使用某个模板:

<?php if ( in_category( 'fruit' ) || post_is_in_descendant_category( 'fruit' ) ) {
    // These are all fruits…
}
?>

 

http://xzh.i3geek.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途及非法用途,否则后果自负!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"qq301.com",如遇到无法解压的请联系管理员!
资源客是一个优秀的分享资源站,本站资源均为各位友友分享而来,特殊原创会标明如有侵犯版权等可联系删除

资源客 » 判断 WordPress 文章是否归属特定分类