如何从包含自定义分类的自定义帖子类型中查询帖子?

时间:2015-07-26 作者:TheWebs

I have the following:

$queryResponse = new \\WP_Query(array(
    \'post_type\' => \'portfolio\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'portfolio_date\',
            \'field\'    => \'name\',
            \'term\'     => $dateSelected
        )
    )
));

var_dump($queryResponse);

$dateSelected is \'2015\'.

I want: All posts from post type of portfolio with a custom taxonomy of portfolio_date (Actual name: Portfolio Date. This is what the user sees) that has the value of, in this case, 2015.

So if I create 6 posts under portfolio, with the portfolio date of 2015, I should get back 6 posts. Right now I get: 0 posts.

I do have 1 post under this post type with this taxonomy.

1 个回复
SO网友:Pieter Goosen

这里有一个或两个问题以及将来可能遇到的bug

  • term 在您的tax_query 应该是terms

    小心使用以日期为名称的术语,尤其是以日期为鼻涕虫的术语。如果自定义永久链接发生冲突或由于某种原因落入模板层次结构中,这可能会导致问题和意外结果。

    切勿使用name a中的字段tax_query. 在为中的SQL查询构造join子句之前,术语名称的清理存在问题WP_Tax_Query 班这是一个已知的bug,可能会出现在许多版本中。

    我已经在this answer 我最近做了,所以请随意阅读整个9码。但简而言之,基本上发生的是,WP_Tax_Query 使用sanitize_title_for_query 清理来自name a中的字段tax_query. 此函数去除所有空格和特殊字符,并将所有大写字母转换为小写字母。所以一个术语名My Term Name/2 转换为my-term_name2 这将失败,因为该术语名称不存在。

    简而言之,作为预防措施,请勿使用name a中的字段tax_query, 宁可使用term_idslug. 如果您不知道这些值,请使用get_term_by() 从名称中获取术语ID或slug,然后将其传递给tax_query

    您还应该确保可以公开地从自定义分类法和自定义帖子类型中查询帖子。请确保在注册帖子类型和分类时设置了正确的值

结束

相关推荐

为什么Pre_Get_Posts挂钩会导致Apache停止工作?

我的所有帖子都有一个名为\'validity\' 我在那里指定日期,直到帖子生效。我的分类法档案显示了所有的帖子。现在我想在那里过滤,并排除无效的帖子。我写道:function e_exclude_posts( $query ) { if( $query->is_tax(\'my_tax\') ) { $query->set( \'post__not_in\', array( 530 ) ); } } add_action( \