如何在WooCommerce中按产品ID订购相关产品?

时间:2017-09-15 07:26:49

标签: php mysql wordpress woocommerce hook-woocommerce

我已经安装了一个插件,允许我在产品页面上添加和自定义相关产品 - WooCommerce Custom Related Products

插件将相关ID存储在post_meta表中:

meta_key => _wcrp_related_ids
meta_values => 一个:3:{I:0; S:3:" 159&#34 ;; I:1; S:3:" 158&#34 ;; I:2; S:3: " 244&#34 ;;}

我想根据存储的顺序订购相关产品,例如159,158,244。

我已经能够使用以下代码通过产品ID订购相关产品。但我不确定如何通过meta_values进行修改以对其进行排序。

add_filter('woocommerce_output_related_products_args', 'jk_related_products_args');

function jk_related_products_args($args)
{
    $args['orderby'] = 'id'; // This works
    return $args;
}

2 个答案:

答案 0 :(得分:0)

请查看WP_Query文档。您应该找到自定义元订购所需的内容。

答案 1 :(得分:0)

  

当您正在寻找something like this时,WordPress就是这样   功能,您需要在post__in中传递 orderby

add_filter('woocommerce_output_related_products_args', 'wh_related_products_args');

function wh_related_products_args($args)
{
    global $post;
    $related = get_post_meta($post->ID, '_wcrp_related_ids', true); //replace it with your metakey
    //if a product do not have any realted product then don't alter order by
    if ($related)
    {
        $args['orderby'] = 'post__in';
    }
    return $args;
}

参考:Order by & include array by specific post ids

代码进入您的活动子主题(或主题)的functions.php文件。或者也可以在任何插件php文件中。
代码已经过测试并且有效。

希望这有帮助!