根据岗位期限和状态显示情况

时间:2021-05-13 作者:DCEXC

我正在创建显示条件,我将应用于单个post模板上的一系列小部件-基本上,我只尝试在满足条件时显示其中一个小部件。

在这种情况下,条件是当前后期限为;术语a“;岗位状态为;草稿“;或“或”;待定;。

我会将此代码应用于每个小部件,但会更改与之相关的术语。

我不能确定我做错了什么。

Current structure

<职位类型;总决赛“

$terms = get_the_terms( $post, \'mytaxonomy\' )
$term = array_pop($terms)
下面是完整代码

global $post;

$stat = get_post_status($post);

$terms = wp_get_post_terms($post);

$term = array(\'tax_query\' => array(
    array(
    //\'field\' => \'des-1\',
    \'terms\' => $terms
            )
        )
    );

$cstat = false;
$cterm = false;

if ($stat===\'draft\'){
$cstat=true;}

elseif ($stat===\'pending\'){
$cstat=true;}

if ($term===\'des-1\'){
$cterm=true;}

if($cstat && $cterm){
return true;}


1 个回复
最合适的回答,由SO网友:Jos Faber 整理而成

您正在填充$term 具有多维数组的变量,但对其进行类型和值检查(===) 与字符串相对。

第二,你说术语是\'des_1\'\'des_1\' (带下划线),但正在检查\'des-1\' (带破折号)。

wp_get_post_terms 将返回一个术语对象数组,因此您最好使用has_term() 用于检查职位上是否使用了该术语。

提示:这可能可读性更好(而且更短):

$cstat = in_array( $stat, ["draft", "pending"] )
$cterm = has_term( \'des_1\', \'des_num\', $post );
return $cstat && $cterm;
甚至更短(但可读性较差):

return in_array( $stat, ["draft", "pending"] ) && has_term( \'des_1\', \'des_num\', $post );