首页 > 解决方案 > 在 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;}

标签: woocommerce

解决方案


更改相关产品查询的正确过滤器钩子是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" 点击“清除瞬态”按钮……</p>


推荐阅读