你会找到法典的Action Reference handy-虽然它没有列出所有内容,但它很好地概述了操作顺序,如果您正在使用的操作运行得太晚,它可以帮助您找到正确的操作。
就你而言,wp
确实会在查询运行后运行,但查看该列表,它会显示出来,具体取决于您想要运行的逻辑pre_get_posts
对你来说是个不错的选择。这实际上是一个常用的操作,它非常强大,允许您在查询运行之前修改查询的几乎所有内容。
没有看到您的代码很难准确预测您希望它执行什么,但我猜您想要的是这样的东西:
add_action( \'pre_get_posts\', \'wpse202063_photographs_term\' );
function wpse202063_photographs_term( $query ){
if( ! is_admin() && $query->is_main_query() && is_singular( \'product\' ) ){
$post_object = get_page_by_path( $query->query[\'name\'], \'OBJECT\', \'product\' );
if( has_term( \'photographs\', \'product_cat\', $post_object ) ){
// modify the query here as you need, using $query->set()
}
}
}
当您查看帖子类型为“product”的单个帖子时,这应该允许您修改
$query
反对改变任何你需要的东西
1重要的是要注意,上面的片段只是初步的-这可能不是最快的方法来做你想做的事情;它还假设您正在使用相当长的永久链接。
请注意pre_get_posts
通行证$query
by reference, 因此,没有必要全球化$wp_query
要进行更改,您可以直接使用$query->set( \'query_var\', \'value\' );
- 显然,将“query\\u var”替换为要修改的var,将“value”替换为要设置的值(也可以使用数组)