Как скрыть товары с ценой выше 1 - PullRequest
1 голос
/ 28 мая 2020

Я использую этот код, чтобы скрыть товары на странице магазина, где цена товара выше 1.

Однако без желаемого результата. Где go не так?

Мой код:

add_action( 'woocommerce_product_query', 'react2wp_hide_products_higher_than_1' );
function react2wp_hide_products_higher_than_1( $q ){
if ( is_shop() ) {
   $meta_query = $q->get( 'meta_query' );
   $meta_query[] = array(
  'key'       => '_price',
  'value'     => 1,
  'compare'   => '>'
   );
    }
   $q->set( 'meta_query', $meta_query );
}

1 Ответ

1 голос
/ 28 мая 2020
  • Вы близко, добавьте type

    'type' => 'numeric' // specify it for numeric values

    type (string) - Тип настраиваемого поля. Возможные значения: 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'. Значение по умолчанию: 'CHAR'.


  • compare (string) - Оператор для проверки. Возможные значения: '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. , 'EXISTS' (только в WP> = 3.5) и 'NOT EXISTS' (также только в WP> = 3.5). Значения 'REGEXP', 'NOT REGEXP' и 'RLIKE' были добавлены в WordPress 3.7. Значение по умолчанию: '='.

Результат:

Это скроет все продукты, цена которых выше 1, в архиве продуктов. страница (магазин)

function react2wp_hide_products_higher_than_1( $q, $query ) {
    // Returns true when on the product archive page (shop).
    if ( is_shop() ) {
        // Get any existing meta query
        $meta_query = $q->get( 'meta_query' );

        // Define an additional meta query 
        $meta_query[] = array(
            'key'       => '_price',
            'value'     => 1,
            'type' => 'numeric', // specify it for numeric values
            'compare'  => '<'
        );

        // Set the new merged meta query
        $q->set( 'meta_query', $meta_query );
    }
}
add_action( 'woocommerce_product_query', 'react2wp_hide_products_higher_than_1', 10, 2 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...