这是一种过于复杂的方法。pre_get_posts
将适用于任何查询,并且有多种方法可以控制回调的时间/方式:
添加和删除回调:
function dummy_action($q) {
}
add_action(\'pre_get_posts\',\'dummy_action\');
$q = new WP_Query(
array(
\'post_type\' => \'post\'
)
);
remove_action(\'pre_get_posts\',\'dummy_action\');
使用自删除回调:
function dummy_action($q) {
remove_action(\'pre_get_posts\',\'dummy_action\');
}
add_action(\'pre_get_posts\',\'dummy_action\');
$q = new WP_Query(
array(
\'post_type\' => \'post\'
)
);
向查询提供一个可以用作触发器的参数:
function dummy_action($q) {
if ($q->get(\'action_trigger\')) {
// do something
}
}
add_action(\'pre_get_posts\',\'dummy_action\');
$q = new WP_Query(
array(
\'post_type\' => \'post\',
\'action_trigger\' => true
)
);
您不想将辅助查询“分配”为主查询。这将导致与使用
query_posts()
, 它实际上是将一个辅助查询指定为主查询。