首页 > 解决方案 > woocommerce_output_related_products_args 挂钩未按预期工作

问题描述

我想在相关产品部分显示 ID 为 64391 的特定产品,但以下代码不适用于此。我错过了什么吗?

 add_filter( 'woocommerce_output_related_products_args','msrp_reconfigure_related_products_args', 20 );

     public function msrp_reconfigure_related_products_args($args)
      {

        $args['posts_per_page'] = 5; 
        $args['columns'] = 5;
        $args['post__in'] = array(64391);

        return $args;
}

标签: woocommercehook-woocommerce

解决方案


正如您可以在 WC 核心源代码中找到的那样。过滤器钩子woocommerce_output_related_products_args通过文件触发wc-template-functions.php并将其传递给woocommerce_related_products函数。所以$args参数不是数据库查询中使用的参数,你不能post__in在其中使用键。

相反,要将特定产品添加到相关产品部分,您可以使用woocommerce_related_products如下过滤器:

add_filter('woocommerce_related_products', 'add_related_products');
function add_related_products($related_product_ids)
{
    // WC source code stores IDs as string in this array, so I did that too
    $related_product_ids[] = '81';
    return $related_product_ids;
}

经过测试,它正在工作。

注意:此过滤器挂钩有 3 个参数$related_posts$product_id$args。您可以通过检查将这些新产品限制为仅显示在特定的单个产品页面上 $product_id


推荐阅读