使用自定义字段修改产品查询

时间:2019-12-03 11:57:29

标签: wordpress woocommerce

我需要使用自定义字段在类别页面上显示产品。

例如,我有自定义字段“ members_access_role”(多次检查)并尝试

add_action( 'woocommerce_product_query', 'action_product_query', 10, 2 );
function action_product_query( $q, $query ) {

    $meta_query = $q->get( 'meta_query');

    $q->set( 'meta_query', array( array(
        'key'     => 'members_access_role',
        'value'   => 'wholesale',
        'compare' => 'IN',
    ) ) );

    $q->set( 'meta_query', $meta_query );
}

这不起作用,我尝试将更改与“ LIKE”,“ =”进行比较,但什么也没有。

2 个答案:

答案 0 :(得分:0)

请替换如下函数:

add_action( 'woocommerce_product_query', 'action_product_query', 10, 2 );
function action_product_query( $q, $query ) {

    $meta_query = $q->get( 'meta_query');

    $meta_query[] = array(
        'key'       => 'members_access_role',
        'value'     => 'wholesale',
        'compare'   => 'IN'
    );

    $q->set( 'meta_query', $meta_query );
}

答案 1 :(得分:0)

您似乎两次设置了meta_query,而第二次设置与使用get方法收到的完全相同。

这是一种编写方式

function action_product_query( $q, $query ) {

    $meta_query = $q->get( 'meta_query');   //Get the query

    //Update the array.
    $meta_query[] = array(
        'key'     => 'members_access_role',
        'value'   => 'wholesale',
        'compare' => '=',
    );

    //Set the updated value below.
    $q->set( 'meta_query', $meta_query );
}