如何排除投资组合类别

时间:2016-09-14 21:40:45

标签: php wordpress function portfolio

我有一个投资组合页面的主题,允许我通过取消选中我想要隐藏的类别来排除某些投资组合类别。 (例如电影,艺术)

问题是某些投资组合项目被分配到多个类别,如果未选中某个类别但我的主题不会显示投资组合项目,但仍会分配给已检查的类别(因此需要多个类别)。

我如何解决这个问题?我想我在我的函数文件中找到了代码,但我不确定。

我尝试将操作员从“不在”中更改为'到' IN'但最终显示所有的cetegories。任何帮助将不胜感激!

    if ( isset( $cat ) && $cat!=-1 ) {
        //include a category
        $query_args['tax_query'] = array(
            array(
                'taxonomy' => PEXETO_PORTFOLIO_TAXONOMY,
                'field' => 'slug',
                'terms' => $cat
            )
        );
    }
    if ( !empty( $excludeCats ) ) {
        if ( !isset( $query_args['tax_query'] ) ) {
            $query_args['tax_query'] = array();
        }
        //exclude categories
        $query_args['tax_query'][]= array(
            'taxonomy' => PEXETO_PORTFOLIO_TAXONOMY,
            'field' => 'id',
            'terms' => $excludeCats,
            'operator' => 'NOT IN'
        );
    }

1 个答案:

答案 0 :(得分:0)

我认为问题出现在投资组合档案中。 如果是这种情况,作为一种解决方法,我建议获取所有可见类别并将它们添加到tax_query。

if( ! empty( $excludeCats ) ) {
    $visibleCats = array_diff( $allCats, $excludeCats );
}
if ( !empty( $excludeCats ) ) {
    if ( !isset( $query_args['tax_query'] ) ) {
        $query_args['tax_query'] = array();
    }
    //exclude categories
    $query_args['tax_query'][]= array(
        'taxonomy' => PEXETO_PORTFOLIO_TAXONOMY,
        'field' => 'id',
        'terms' => $visibleCats,
        'operator' => 'IN'
    );
}