Чтобы обрабатывать пользовательские метаданные продукта в WC_Product_Query
(находящемся в таблице)add_filter( 'woocommerce_product_data_store_cpt_get_products_query', 'handling_custom_meta_query_keys', 10, 3 ); function handling_custom_meta_query_keys( $wp_query_args, $query_vars, $data_store_cpt ) { $meta_key = '_volume'; // The custom meta_key if ( ! empty( $query_vars[$meta_key] ) ) { $wp_query_args['meta_query'][] = array( 'key' => $meta_key, 'value' => esc_attr( $query_vars[$meta_key] ), 'compare' => '>', // <=== Here you can set other comparison arguments ); } return $wp_query_args; }
, он прост и работает, как объясняется в последнем абзаце соответствующей документации .
Но он не обрабатывает несколько значений и сравнительных аргументов, как в a
WP_Query
, если вы не устанавливаете их в функции, расширяющей meta_query.
Для настраиваемого мета-ключа продукта, как _volume
для обработки объема, взятого продуктом в м3 (кубических метрах) , следующий код будет включать этот обычай 'compare'
с конкретным compare
аргументом «больше, чем» :
'0.2'
Код идет в файле function.php активной дочерней темы (или активной темы).
Теперь вы просто сделаете свой запрос на этот настраиваемый мета-ключ на основе конкретного аргумента, чтобы получить все продукты с большим объемом, чем :$queried_products = wc_get_products( array( '_volume' => '0.2' ) );
WP_Query
WPDB
WC_Product_Query
Протестировано и работает.
Как вы можете видеть, вы можете продолжать использовать
WP_Query
столько разработчиков Woocommerce, которые все еще выполняют или даже SQL-запросы через WordPressWC_Order_query
Classa € |Объявленная революция вокруг этого не скоро появится, и я полагаю, что они будут расширяться
WC_Product_Query
и,WP_Query
какWP_Query
и многие другие возможности и возможности.