所以我以前用过它pre_get_posts
,functions.php
它就像一个魅力,但由于某种原因,我无法弄清楚为什么它不适用于archive-product.php
我拥有的 WooCommerce 页面。
目录结构:
.
├──woocommerce
| ├── archive-product.php
├── functions.php
内部functions.php
:
function specific_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', '7815' );
}
}
add_action( 'pre_get_posts', 'specific_category' );
内部archive-product.php
:
var_dump($wp_query); //this should be the main query variable but doesn't exist.
然后我在里面尝试了这个archive-product.php
:
global $wp_query;
foreach($wp_query->posts as $k){
print_r($k);
echo "<br>";
echo "<br>";
}
functions.php
哪个输出帖子但帖子与代码中设置的类别无关$query->set( 'cat', '7815' );
问题:为什么我必须声明global $wp_query
(默认情况下应该初始化),为什么帖子不是我选择的类别?