Как показать продукты, используя мета: запрос с WC_Shortcodes :: products на WooCommerce - PullRequest
0 голосов
/ 24 января 2020

Я работаю на веб-сайте 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, чтобы он работал? Или что не так с этим запросом?

Любая помощь приветствуется.

...