在Wordpress初始化之前修改/覆盖WP_Query

时间:2019-07-15 04:34:51

标签: wordpress woocommerce

在Woo Commerce中,我希望能够动态更改某些产品类别页面上显示的产品,而不必手动更改后端的产品类别。

我已经在循环之前使用以下代码实现了“覆盖”“循环” ...

// Using array of products I pulled from DB
foreach($_products as $featured_product) {
    $post_object = get_post($featured_product->get_id());
    setup_postdata($GLOBALS['post'] =& $post_object);
    wc_get_template_part( 'content', 'grid-product' );
}

wp_reset_postdata();

此解决方案完成了一半的工作,它使产品以我想要的方式出现在模板上。

但是,所有的架构代码都丢失了,并且在模板中弹出了一些其他内容,因为它在主页面查询中没有“看到”和显示产品。

后来进行了一些研究,我发现这个钩子似乎可以解决我的问题。

add_action( 'woocommerce_product_query', function($q) {
    $ids = [10, 20, 30];
    $q->set('post__in', $ids);
});

这是针对Woo Commerce存档页面的,因此我希望此代码插入具有我传递的ID的产品。

循环中没有显示任何内容,我确实尝试更新WP_Query中的post_count属性以尝试使循环也触发。

有人可以提供更多建议吗?

谢谢

0 个答案:

没有答案