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

Che*_*cía 3 woocommerce

我一直在尝试在 woocommerce 中定制相关产品。我已经使用 woocommerce_output_lated_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;}
Run Code Online (Sandbox Code Playgroud)

Loi*_*tec 5

更改相关产品查询的正确过滤器挂钩是woocommerce_product_related_posts_query\xe2\x80\xa6 要设置后元查询,您将使用以下内容(请参阅末尾的注释)

\n\n
add_filter( \'woocommerce_product_related_posts_query\', \'alter_product_related_posts_query\', 10, 3 );\nfunction alter_product_related_posts_query( $query, $product_id, $args ){\n    global $wpdb;\n\n    $query[\'join\']  .= " INNER JOIN {$wpdb->postmeta} as pm ON p.ID = pm.post_id ";\n    $query[\'where\'] .= " AND pm.meta_key = \'public_catalog\' AND meta_value LIKE \'1\' ";\n\n    return $query;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。

\n\n
\n

注意:在后端(管理员)中Woocommerce> Status> Tools>"WooCommerce transients" 单击“清除瞬态”按钮\xe2\x80\xa6

\n
\n