所以我之前在pre_get_posts
中使用了functions.php
,它就像一个魅力,但由于某种原因,我无法弄清楚为什么它不适用于WooCommerce页面{{1}我有。
目录结构:
archive-product.php
内部.
├──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' );
(默认情况下应该初始化)以及为什么不是我选择的类别中的帖子?
答案 0 :(得分:0)
在页面中,您看到的查询是一个页面的类别,该页面基本上就是您正在看到的页面。它不是您希望在主页上看到的帖子列表。
如果您有一个普通的博客式主页,并且您查看了查询,则可以看到[found_posts] => 4
。但尝试将“页面”设置为主页并检查您的查询。您可以看到[found_posts] => 1
,查询中找到的项目(帖子/页面)是当前项目。
您可以尝试在页面模板中添加Wordpress WP_Query
类的自定义查询,它也为您提供了很多选项。
此外,如果您要检查显示网页的主页,请考虑使用is_front_page()
。
关于声明$wp_query
的其他问题,遗憾的是我没有答案。