Obtener todos los productos con un atributo personalizado
Quiero hacer una consulta personalizada para obtener todos los productos con un atributo específico ("demo" en mi caso). La consulta que quiero debería devolver esto:
a:5:{s:4:"demo";
a:6:{s:4:"name";
s:4:"DEMO";
s:5:"value";
s:366:"ENLACE AL DEMO";
s:8:"position";
s:1:"0";
s:10:"is_visible";
i:0;
s:12:"is_variation";
i:0;
s:11:"is_taxonomy";
i:0;
}
}
No sé cómo hacer un $args para obtener los productos. Quiero que $args sea algo así:
$args = array (
'meta_query' => array(
array(
'key' => 'meta_value',
'value' => 'demo',
'compare' => 'LIKE', ),
),
);
¡Gracias!

Has escrito key
como meta_value
. Debería ser el nombre de tu meta. El nombre que le has dado a tus campos personalizados o meta. Luego usa la siguiente consulta.
$args = array (
'post_type' => 'your-post-type',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'demo',
'value' => '',
'compare' => '!='
),
),
);
Por defecto, el compare
está establecido en =

Gracias, quiero obtener todos los productos que tengan un atributo llamado 'demo', no necesito obtener el valor porque el campo del valor será un enlace. De cualquier forma, ¡gracias!

No, lo intenté y no funciona para mí. En mi wp_postmeta.meta_value tengo esto:
a:5:{ s:4:"demo"; a:6:{s:4:"name"; s:4:"DEMO"; s:5:"value"; s:366:"LINK TO DEMO"; s:8:"position"; s:1:"0"; s:10:"is_visible"; i:0; s:12:"is_variation"; i:0; s:11:"is_taxonomy"; i:0; } ... más atributos }

en cualquiera de tus publicaciones donde tengas esa clave demo. ¿Puedes hacer un get_post_meta(get_the_ID());
y mostrar el array devuelto?

¡OK, YA LO TENGO!! ¡yuhuuu!
¡Muchas gracias chicos!
Tengo esto:
$args = array (
'post_type' => 'product',
'posts_per_page' => -1,
'meta_query' => array(
array(
'value' => 'demo',
'compare' => 'like'
),
),
);
Bueno, esto funciona al menos para mí
¡Gracias gracias!!
¡Saludos cordiales!

agrega "value" => "abc", junto a "key" y "compare". la documentación menciona un posible bug pero no está claro para mí si necesitas "value" o no (modifiqué el código anterior)

Sé que esto es antiguo, pero con SQL directo, aquí están mis soluciones:
Obtener todos los metadatos de un producto:
SELECT meta_key, meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = 626
Obtener productos con metadatos específicos
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'
AGREGAR PARA OBTENER METADATOS DE UN PRODUCTO ESPECÍFICO
AND p.id=626
Agregar para obtener un valor meta específico
AND m.meta_value='today'
