为了便于讨论,这里有一个类别内查询的版本。php:
wp_reset_query();
$category_id = get_cat_ID(single_cat_title(\'\', false));
$my_query = new WP_Query(array(
\'posts_per_page\' => SOME_DEFINED_VALUE,
\'cat\' => $category_id,
\'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ),
\'post_type\' => array(\'post\',\'post_custom_1\',\'post_custom_2\',\'post_custom_3\')
));
// print_r($my_query);
简而言之,它不起作用。以下是我注意到的。
当我执行print\\r($my\\u query)时;我可以在第一行看到query\\u vars。它们与我的数组参数不匹配。例如,“posts\\u per\\u”页面默认为其他值(不是常量),post\\u类型列表不再包括post(应该/必须)。
如果我删除带有“cat”=>的行,或对值进行硬编码(“cat”=>3),那么一切都会按预期进行。剩余的查询变量显示在打印中。生活很好:)
我尝试了以下方法,但没有成功:
将var设置为常量,就像posts\\u per\\u页面一样(这不会导致问题)在$category\\u id号周围加上引号-结果与根本没有引号一样。它不起作用
\'cat=>数组($category\\u id)-我拉错了-它不喜欢它是数组有人有什么建议吗?下面是“起作用”的原因(阅读:我可以使用$category\\u id,这样做不会弄乱WP\\u Query()数组列表中的其余参数)。
\'cat\' => \'"-\'$category_id\'"\',
也就是说,我不能说猫的ID。疯了吧?除非我能正确地解决它,否则我将对我的所有cat not\'ed进行逗号分隔,解析出当前cat,然后使用该字符串进行查询。换句话说,如果我的猫是A、B和C,而不是对A进行查询(正如人们所期望的那样)
\'cat\' => A
我要查询的不是B,不是C。\'cat\' => -B,-C
希望有一个更简单的解决方案。我已经在这上面呆了太多个小时了,我已经迫不及待地想使用这个黑客程序,并把它干掉。也就是说,这对我来说确实是一个核心缺陷。是的,我使用的是3.5.1(或者我们现在使用的是0.2还是0.3?)。我的观点是,我使用的是最新版本(在3.2.x中也是如此)。顺便说一句,我在其他地方看到过这个问题(例如WP论坛)。唯一的解决方案建议args数组不是数组而是字符串。即使在WP\\u查询中可以这样做,我如何将post\\u类型的列表/数组作为字符串执行?最后,如果我做错了什么,那么Codex帮助页面需要更新,是吗?
帮助:)
SO网友:Wyck
我测试了你的函数,它运行得很好,所以你可能在主题中的其他代码中有错误,或者插件冲突。或者您的循环不正确。
作为参考,我在上测试了以下代码category.php
在2111年,输出是正确的,没有错误。
wp_reset_query();
define("SOME_DEFINED_VALUE", 5);
$category_id = get_cat_ID(single_cat_title(\'\', false));
$my_query = new WP_Query(array(
\'posts_per_page\' => SOME_DEFINED_VALUE,
\'cat\' => $category_id,
\'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ),
\'post_type\' => array(\'post\',\'post_custom_1\',\'post_custom_2\',\'post_custom_3\')
));
var_dump($my_query);
SO网友:Andy Killen
当我把你的东西分成可管理的块来分析它们时,我发现问题很可能出在数组中的“分页”行上。
wp_reset_query();
$category_id = get_cat_ID(single_cat_title(\'\', false));
$paged = ( get_query_var(\'paged\') )? get_query_var(\'paged\') : 1 ;
$query = array(
\'posts_per_page\' => 5,
\'cat\' => $category_id,
\'paged\' => $paged ,
\'post_type\' => array(\'post\',\'custom_1\',\'custom_2\',\'custom_3\')
);
$loop = new WP_Query( $query);
print_r($loop);
如您所见,我在第一个
get_query_var
从而成为一个合适的三元运算符。我在试验台上试过这个,效果很好。
雷加德桑迪