正如我在对你的问题的评论中所说的那样
糟糕的插件编写总是会在某些时候导致一些灾难。在我看来,删除该插件并编写自己的代码,或者找到一个编写正确的插件。当整个汽车完全报废时,更换损坏的轮胎是没有用的:-)
刚开始,never 使用query_posts
Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。
在这里,您最好编写自己的代码并放弃插件。您还可以将当前插件(仅“好”代码)与我将提供给您的代码合并到您自己的插件中(如果需要)。
永远不要对非作者的插件/主题文件进行任何更改。最大的原因是,到了更新日,你会失去all 您可以自定义。而是创建自己的插件或在子主题中进行更改
使用当前的类别参数,您想要完成的是不可行的。你最好在这里使用tax_query
具有WP_Query
. 使用tax_query
, 默认情况下,要设置的术语中包含子术语,这就是您要查找的
您可以尝试以下操作(请注意:这需要PHP 5.4+)
$args = [
\'post_type\' => \'post\',
\'orderby\' => \'meta_value_num\',
\'meta_key\' => \'rankk\',
\'order\' => \'DESC\',
\'posts_per_page\' => 100,
\'tax_query\' => [
[
\'taxonomy\' => \'category\',
\'field\' => \'term_id\',
\'terms\' => \'YOUR PARENT CATEGORY ID\',
],
],
];
$q = new WP_Query( $args );
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
对于5.4之前的PHP版本,请尝试以下操作
$args = array(
\'post_type\' => \'post\',
\'orderby\' => \'meta_value_num\',
\'meta_key\' => \'rankk\',
\'order\' => \'DESC\',
\'posts_per_page\' => 100,
\'tax_query\' => array(
array(
\'taxonomy\' => \'category\',
\'field\' => \'term_id\',
\'terms\' => \'YOUR PARENT CATEGORY ID\',
),
),
);
$q = new WP_Query( $args );
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}