Я работаю на веб-сайте WooCommerce и пытаюсь составить запрос, чтобы получить 4 последних созданных продукта и показать их с помощью шорткода. Это полностью работает.
Тем не менее, я хочу теперь показать только те продукты, которые не содержат букв «JP» (Япония) в его мета «_country-select». Это поле сериализуется (таким образом: s: 45: "a: 3: {i: 0; s: 2:" JP "; i: 1; s: 2:" US "}) и может содержать коды других стран, такие как "US".
Вот код, используемый для отображения 4 последних продуктов:
<?php
$args = array(
'limit' => 4,
'columns' => 1,
'orderby' => 'date',
'order' => 'desc',
);
$shortcode_content = custom_do_shortcode(
'products', array(
'orderby' => esc_attr( $args['orderby'] ),
'order' => esc_attr( $args['order'] ),
'per_page' => intval( $args['limit'] ),
'columns' => intval( $args['columns'] ),
)
);
echo $shortcode_content;
?>
Теперь я должен добавить мета-запрос, который должен выглядеть примерно так:
'meta_query' => array(
array(
'key' => '_country-select',
'value' => '%JP%',
'compare' => 'NOT LIKE',
)
)
Но как бы я ни добавил этот мета-запрос, будут показаны те же результаты: только 4 последних продукта, даже если они содержат «JP».
Вот что делает функция «custom_do_shortcode»:
function custom_do_shortcode( $tag, array $atts = array(), $content = null ) {
global $shortcode_tags;
if ( ! isset( $shortcode_tags[ $tag ] ) ) {
return false;
}
return call_user_func( $shortcode_tags[ $tag ], $atts, $content, $tag );
}
Другими словами, вызывая функцию WC_Shortcodes :: products.
Так, где я должен поместить meta_query, чтобы он работал? Или что не так с этим запросом?
Любая помощь приветствуется.