Obține toate produsele cu un atribut personalizat
Vreau să fac o interogare personalizată pentru a obține toate produsele cu un atribut specific ("demo" în cazul meu). Interogarea pe care vreau să o returneze arată astfel:
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;
}
}
Nu știu cum să creez $args pentru a obține produsele. Vreau ca $args să arate cam așa:
$args = array (
'meta_query' => array(
array(
'key' => 'meta_value',
'value' => 'demo',
'compare' => 'LIKE', ),
),
);
Mulțumesc!

Ai scris key
ca meta_value
. Ar trebui să fie numele meta-ului tău. Numele pe care l-ai dat câmpurilor personalizate sau meta-urilor. Apoi folosește următoarea interogare.
$args = array (
'post_type' => 'your-post-type',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'demo',
'value' => '',
'compare' => '!='
),
),
);
Implicit, compare
este setat la =

Mulțumesc, vreau să obțin toate produsele care au un atribut numit 'demo', nu vreau să obțin valoarea deoarece câmpul de valoare va fi un link. Oricum, mulțumesc!

Nu, am încercat și nu funcționează pentru mine. În wp_postmeta.meta_value am asta:
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; } ... mai multe atribute }

în oricare dintre postările tale unde ai acea cheie demo. Poți să faci un get_post_meta(get_the_ID());
și să afișezi array-ul returnat.

OK, AM REUȘIT!! uraaa!
Mulțumesc mult tuturor!!
Am asta:
$args = array (
'post_type' => 'product',
'posts_per_page' => -1,
'meta_query' => array(
array(
'value' => 'demo',
'compare' => 'like'
),
),
);
Ei bine, asta funcționează cel puțin pentru mine
Mulțumesc mult!!
Cele mai bune urări!

adaugă "value" => "abc", lângă "key" și "compare". documentația menționează un posibil bug dar nu e clar dacă ai nevoie de "value" sau nu (am modificat codul de mai sus)

Am înțeles, codul tău și cel al lui karun au fost de mare ajutor! Mulțumesc.

Știu că asta este veche, dar SQL direct, iată soluțiile mele:
Obțineți toate metadatele pentru un produs:
SELECT meta_key, meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = 626
Obțineți produse cu metadate specifice
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'
ADAUGĂ PENTRU A OBȚINE METADATE PENTRU UN PRODUS SPECIFIC
AND p.id=626
Adaugă pentru a obține o valoare meta specifică
AND m.meta_value='today'
