Получить все товары с пользовательским атрибутом
Мне нужно сделать пользовательский запрос, чтобы получить все товары с определенным атрибутом (в моем случае "demo").
Запрос должен возвращать данные в таком формате:
a:5:{s:4:"demo";
a:6:{s:4:"name";
s:4:"DEMO";
s:5:"value";
s:366:"ССЫЛКА НА ДЕМО";
s:8:"position";
s:1:"0";
s:10:"is_visible";
i:0;
s:12:"is_variation";
i:0;
s:11:"is_taxonomy";
i:0;
}
}
Я не знаю, как правильно составить $args для получения товаров. Хочу, чтобы $args выглядели примерно так:
$args = array (
'meta_query' => array(
array(
'key' => 'meta_value',
'value' => 'demo',
'compare' => 'LIKE', ),
),
);
Спасибо!

Вы указали key
как meta_value
. Это должно быть именем вашего метаполя. Имя, которое вы дали своим пользовательским полям или метаданным. Затем используйте следующий запрос.
$args = array (
'post_type' => 'your-post-type',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'demo',
'value' => '',
'compare' => '!='
),
),
);
По умолчанию параметр compare
установлен в значение =

Спасибо, я хочу получить все продукты, у которых есть атрибут под названием 'demo'. Мне не нужно получать значение, потому что поле значения будет ссылкой. В любом случае, спасибо!

Нет, я попробовал, и у меня не работает. В моей таблице wp_postmeta.meta_value есть следующее:
a:5:{ s:4:"demo"; a:6:{s:4:"name"; s:4:"DEMO"; s:5:"value"; s:366:"ССЫЛКА НА ДЕМО"; s:8:"position"; s:1:"0"; s:10:"is_visible"; i:0; s:12:"is_variation"; i:0; s:11:"is_taxonomy"; i:0; } ... другие атрибуты }

в любом из ваших постов, где есть этот демо-ключ. Можете выполнить get_post_meta(get_the_ID());
и показать возвращаемый массив.

ОК, У МЕНЯ УЖЕ ПОЛУЧИЛОСЬ!! Урааа!
Огромное спасибо, ребята!!
У меня есть вот такой код:
$args = array (
'post_type' => 'product',
'posts_per_page' => -1,
'meta_query' => array(
array(
'value' => 'demo',
'compare' => 'like'
),
),
);
Ну и это работает, по крайней мере у меня
Спасибо спасибо!!
С наилучшими пожеланиями!

Добавьте "value" => "abc" рядом с "key" и "compare". В документации упоминается возможный баг, но мне не совсем понятно, нужно ли "value" или нет (я изменил код выше)

Я знаю, что это старый метод, но чистый SQL, вот мои решения:
Получить все метаданные для товара:
SELECT meta_key, meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = 626
Получить товары с определенными метаданными
SELECT p.id, p.post_title, m.meta_key, m.meta_value FROM wp_posts p
INNER JOIN wp_postmeta m ON p.id=m.post_id AND m.meta_key='_auction_dates_to'
ДОБАВИТЬ ДЛЯ ПОЛУЧЕНИЯ МЕТАДАННЫХ КОНКРЕТНОГО ТОВАРА
AND p.id=626
Добавить для получения конкретного значения метаполя
AND m.meta_value='today'
