Ottenere tutti i prodotti con un attributo personalizzato

29 giu 2015, 10:46:31
Visualizzazioni: 14.1K
Voti: 5

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!

0
Tutte le risposte alla domanda 4
6

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 =

29 giu 2015 10:57:48
Commenti

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!

C.B. C.B.
29 giu 2015 11:37:49

@user2879109 Ho aggiornato il codice. Per favore controlla

Karun Karun
29 giu 2015 11:49:05

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 }

C.B. C.B.
29 giu 2015 12:06:45

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.

Karun Karun
29 giu 2015 12:14:23

Ho capito, grazie per il tuo aiuto!! Ho scritto il codice qui sotto

C.B. C.B.
29 giu 2015 12:20:46

Il meta_key che memorizza gli attributi di woocommerce è '_product_attributes'. Tuttavia non esiste un modo specifico per cercare prodotti basati su attributi personalizzati del prodotto.

gmatta gmatta
17 ago 2016 09:27:53
Mostra i restanti 1 commenti
1

OK CE L'HO FATTO!! yuhuuu!

Grazie mille ragazzi!!

Ho questo:

$args = array (
     'post_type'  => 'product',
     'posts_per_page'  => -1, 
     'meta_query' => array(
         array(
          'value' => 'demo',
          'compare' => 'like'
         ),
       ),
     );

Beh questo funziona almeno per me

Grazie grazie!!

Saluti!

29 giu 2015 12:13:40
Commenti

Solo per qualcuno che cerca una soluzione simile, questo codice non funzionerà nella maggior parte dei casi. Potrebbe aver funzionato per una situazione specifica.

gmatta gmatta
17 ago 2016 09:26:28
4

prova qualcosa del genere

$args = array(
    "post_type" => "product",
    "meta_query" => array(
        array(
            "key"     => "demo",
            "value" => "abc",
            "compare" => "EXISTS",
        ),
    ),
);
$query = new WP_Query( $args );
29 giu 2015 10:56:43
Commenti

Grazie ma continuo a ottenere 0 risultati

C.B. C.B.
29 giu 2015 11:36:06

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)

mmm mmm
29 giu 2015 12:02:05

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

C.B. C.B.
29 giu 2015 12:19:06

Il meta_key che memorizza gli attributi di WooCommerce è '_product_attributes'. Tuttavia, non esiste un modo specifico per cercare prodotti basandosi su attributi personalizzati.

gmatta gmatta
17 ago 2016 09:31:12
0

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'
14 dic 2018 16:56:58