Ottenere tutti i prodotti con un attributo personalizzato
Voglio creare una query personalizzata per ottenere tutti i prodotti con un attributo specifico ("demo" nel mio caso) La query che voglio ottenere da questo:
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;
}
}
Non so come creare un $args per ottenere i prodotti. Vorrei che $args fosse qualcosa come:
$args = array(
'meta_query' => array(
array(
'key' => 'meta_value',
'value' => 'demo',
'compare' => 'LIKE',
),
),
);
Grazie!

Hai scritto key
come meta_value
. Dovrebbe essere il nome del tuo meta. Il nome che hai dato ai tuoi campi personalizzati o meta. Quindi utilizza la seguente query.
$args = array (
'post_type' => 'your-post-type',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'demo',
'value' => '',
'compare' => '!='
),
),
);
Di default il parametro compare
è impostato su =

Grazie, voglio ottenere tutti i prodotti che hanno un attributo chiamato 'demo', non mi interessa ottenere il valore perché il campo del valore sarà un link Comunque, grazie!

No, ho provato e non funziona per me. Nel mio wp_postmeta.meta_value ho questo:
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; } ... altri attributi }

in uno qualsiasi dei tuoi post dove hai quella chiave demo. Puoi fare un get_post_meta(get_the_ID());
e mostrare l'array restituito.

aggiungi "value" => "abc", accanto a "key" e "compare". la documentazione parla di un possibile bug ma non è chiaro per me se hai bisogno di "value" o meno (ho modificato il codice sopra)

Ho capito, il tuo codice e quello di karun sono stati di grande aiuto! Grazie.

So che è vecchio, ma con SQL diretto, ecco le mie soluzioni:
Ottenere tutti i metadati di un prodotto:
SELECT meta_key, meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = 626
Ottenere prodotti con metadati specifici
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'
AGGIUNGERE PER OTTENERE I METADATI DI UN PRODOTTO SPECIFICO
AND p.id=626
Aggiungere per ottenere un valore meta specifico
AND m.meta_value='today'
