我知道互联网上有很多关于如何通过 WP_Query 获得WooCommerce产品的解决方案 . 但是,WooCommerce没有填充't seem to work fully if it'对象 . 例如:过滤或排序
这两个模板都调用:
woocommerce_products_will_display()
检查页面是否为分类页面(如果您使用自己的自定义模板,则显然是错误的):
if ( ! is_product_taxonomy() ) return false;
如果您只是想要产品,这是一个简单解决方案的示例:WooCommerce: Display ONLY on-sale products in Shop
所以,我在这里似乎需要解决几个问题:
1)如何告诉WC我的“销售”页面是一个分类页面?我需要做些什么来强制它进入分类法吗?
2)如何让WC_Query填充销售查询(而不仅仅是WP_Query)
我有依赖的插件:
$woocommerce->query->layered_nav_product_ids
被填充 .
任何帮助表示赞赏!谢谢!!!
1 回答
那么
woocommerce_products_will_display()
是可插入的,这意味着您可以在自己的functions.php(或特定于站点的插件)中定义它并对其进行更改,让它为您的特定模板/页面返回true
.我认为它可以代表一些调整和过滤器 .
EDIT
我多玩了一下这个 . 通常,更改要检索的帖子是在
pre_get_posts
钩子中完成的 . 我看了一下WooCommerce在做什么 . 他们正在向pre_get_posts
钩子添加一些内容并从那里调用他们的特殊查询内容 .但是如果你不在WooCommerce页面上,他们的特殊查询就会消失 . 所以,它让我觉得我们可以从我们自己的功能中自己调用它 . 我把它放在一起并加上一个特殊的页面模板,用于一个名为“on-sale”的页面(基本上只是商店模板的一个副本),似乎只显示了具有适当排序和分页的待售商品 .
您的里程可能会有所不同,但我希望它有所帮助 .