【发布时间】:2013-01-20 12:12:55
【问题描述】:
我一直在努力让 tax_query 在我的 WP_Query 中工作。代码如下:
$nextSundayTalkArgs = array(
'post_type' => 'talk',
'posts_per_page' => 1,
'tax_query' => array(
array(
'taxonomy' => 'talk-type',
'field' => 'slug',
'terms' => 'sunday-talk'
)
)
);
$nextSundayTalkQuery = new WP_Query( $nextSundayTalkArgs );
肯定有帖子类型为“talk”的帖子——如果我删除 tax_query 部分,正确的帖子就会正常显示。有 5 次谈话使用正确的分类术语“周日谈话”(如果我尝试使用 ID 而不是 slug,它也不起作用)。
奇怪的是,如果我将帖子类型更改为“帖子”并将分类法更改为“类别”,并省略“字段”和“术语”部分,它会返回我唯一没有任何术语的帖子全部。
在我发疯之前,非常感谢任何帮助。
【问题讨论】:
-
如下所示,我添加了以下行:
<?php echo $GLOBALS['nextSundayTalkQuery']->request; ?>这将返回:SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND 0 = 1 AND wp_posts.post_type = 'talk' AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 1 -
我怀疑“1=1 AND 0=1”可能是个问题,但如果是这样,我不确定这是指什么或导致它的原因。
-
酷 - 我想知道这是否与分类学被命名为谈话类型有关,所以有冲突 - 检查你是否不应该使用下划线,也许?例如talk_type
-
额外的帮助 - 检查特定的 Wordpress stackexchange,特别是尝试这个链接,它提供了一个很好的分类查询示例:wordpress.stackexchange.com/questions/49185/…在那里发布你的问题,它可能会得到更好的见解!跨度>
-
谢谢 - 我去看看。我以前看过该链接,但我似乎正确地进行了查询。不幸的是,将分类法更改为“talktype”并没有帮助!
标签: wordpress wordpress-theming