带有自定义POST类型的GET_POSTS()在Page.php之外不起作用

时间:2015-11-22 作者:Mahmoud K

我创建了一个名为“社区”的自定义帖子类型,创建了一个带有类别的新帖子(cat id = 6). 我正在使用以下代码:

$args = array (
    \'numberposts\' => -1,
    \'post_type\'   => \'community\',
    \'post_status\' => \'publish\',
    \'orderby\'     => \'date\',
    \'order\'       => \'DESC\',
    \'category\'    => 6
);
$communities = get_posts($args);
它在我的页面中非常有效。php。然而,当我在类别内尝试相同的内容时,它不起作用。php页面,我没有准确地得到帖子!它正在返回所有其他帖子。

有什么想法吗?

1 个回复
SO网友:s_ha_dum

我猜有一个过滤器--pre_get_posts 最有可能的是——应用于类别存档,并且该过滤器编写得太宽泛,并且应用于页面上的所有查询,而不仅仅是它要用于的查询——可能是主查询。正确的解决方案是修复该过滤器,但如果没有看到代码,我无法确切说明如何修复。我想你需要补充一下if(is_main_query()) {... } 但这也是猜测。

如果您知道过滤器的回调是什么,则可以删除过滤器:

remove_filter(\'pre_get_posts\',\'callback_name\');
您可能需要在查询之前使用它,并且您可能需要add_filter() 之后,根据您的页面结构。

could also use:

remove_all_filters( \'pre_get_posts` );
但这确实是对问题的沉重打击。