我正在开发的WP主题遇到问题。我有一个category.php
文件,可用于根据其类别列出所有帖子。在此文件中,我具有以下代码:
$post_query = new WP_Query(array(
'post_type' => 'post',
'cat' => $cat_id
));
while($post_query->have_posts() ) { ...
这很好用。但是我还有一个blog.php
文件,我想在其中列出所有文章,无论其类别如何。我正在使用这个:
$post_query = new WP_Query(array(
'post_type' => 'post',
'orderby' => 'date'
));
while($post_query->have_posts() ) { ...
现在这不起作用。即使没有在WP_Query中使用任何参数,我也没有得到任何结果。当我转储$post_query
变量时,我可以看到MySQL查询,并且看起来WP即使在第二种情况下也正在以某种方式进行过滤。这是两个查询:
第一种情况:
SELECT wp_posts.* FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (2) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.ID DESC
第二种情况:
SELECT wp_posts.* FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (6) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.ID DESC
我不确定为什么在第二种情况下使用此部分:wp_term_relationships.term_taxonomy_id IN (6)
我想念什么?
答案 0 :(得分:0)
神秘的问题解决了:我正在使用一个插件来处理博客(多语言)的多语言方面,并且似乎创建了一些自定义分类法来仅列出当前语言的文章。
答案 1 :(得分:0)
wp_term_relationships
来自使用relationhsip
分类法的Polylang插件。
由于该插件通过使用tax_query更改为仅显示当前语言内容而挂接到某些主查询上。 此外,如果您想使用一些自定义的tax_query,则无需覆盖Polylang的那个,请小心。