在Woocommerce中使用自定义元查询自定义相关产品

时间:2018-12-24 18:26:50

标签: woocommerce

我一直在尝试定制woocommerce中的相关产品。我已经使用woocommerce_output_related_products_args添加meta_query选项,但是它们没有效果,这是我的代码:

add_filter( 'woocommerce_output_related_products_args', 
'custom_related_products_args' );
 function custom_related_products_args( $args ) {
$args['posts_per_page'] = 4;
$args['columns'] = 4;
$args['meta_query'] = array(
    array(
        'key' => 'public_catalog',
        'value' => true
    ),
); 
return $args;}

1 个答案:

答案 0 :(得分:2)

更改相关产品查询的正确过滤器钩子是woocommerce_product_related_posts_query ...要设置帖子元查询,您将使用以下(请参阅结尾处的注释)

add_filter( 'woocommerce_product_related_posts_query', 'alter_product_related_posts_query', 10, 3 );
function alter_product_related_posts_query( $query, $product_id, $args ){
    global $wpdb;

    $query['join']  .= " INNER JOIN {$wpdb->postmeta} as pm ON p.ID = pm.post_id ";
    $query['where'] .= " AND pm.meta_key = 'public_catalog' AND meta_value LIKE '1' ";

    return $query;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

  

注意:在后端(管理员)的Woocommerce> Status> Tools> "WooCommerce transients"下,点击“清除瞬态”按钮