Probleme cu meta_key și meta_value în WordPress
Încerc să filtrez loop-ul pentru a găsi postări care au un meta_key
cu o anumită valoare meta_value
. Am verificat Codex-ul și am încercat următoarele fără succes:
// Nu returnează rezultate
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
'relation' => 'OR',
array(
'meta_key' => 'priority',
/* Am încercat și așa
'meta_value' => '80',
'compare' => '='
*/
'meta_value' => array('80'),
'compare' => 'IN' )
)
);
// Nu returnează rezultate
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_key' => 'priority',
'meta_value' => 80
);
// Afișează toate cqpp_interventions și confirm că unele au meta_value setat la 80
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_key' => 'priority'
);
$cqpp_posts = get_posts( $args );
Iată cum verific în interiorul loop-ului:
$priority = get_post_meta( get_the_ID(), 'priority');
echo '<pre>';
var_dump($priority);
echo '</pre>';
care returnează:
search.php:16:
array (size=1)
0 =>
array (size=1)
0 => string '80' (length=2)
search.php:16:
array (size=1)
0 =>
array (size=2)
0 => string '80' (length=2)
1 => string '91' (length=2)
Ce pot face pentru a rezolva această problemă?

Ai putea încerca acest lucru:
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
array(
'key' => 'priority',
'value' => '80'
)
)
);
Problema reală cu interogarea ta este pentru că folosești meta_key
și meta_value
. Totuși, array-urile din argumentul meta_query
ar trebui să aibă cheile key
și value
în schimb.
Acest lucru ar funcționa de asemenea:
'key' => 'priority',
'value' => array('80')

Din referința primului tău $args
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
'relation' => 'OR',
array(
'meta_key' => 'priority',
/* Am încercat și asta
'meta_value' => '80',
'compare' => '='
*/
'meta_value' => array('80'),
'compare' => 'IN' )
)
);
Ai adăugat 'relation' => 'OR'
, care nu este necesar. Parametrul relation
trebuie adăugat doar dacă ai mai multe meta-valori de interogat. De asemenea, compare
nu este necesar dacă vrei o valoare specifică, deoarece implicit folosește =
.
Variabila $args actualizată va fi
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
array(
'meta_key' => 'priority',
'meta_value' => '80', // deoarece 80 este string
)
)
);
// încearcă oricare dintre următoarele.
$myPost = new WP_Query( $args ); // preia postările și le gestionează ca obiecte
$myPost = get_posts( $args ); // preia postările și le stochează într-un array
Sper că acest lucru te va ajuta.
Mulțumesc
