Filtrarea postărilor după datele meta ale postării
Vreau să filtrez postările în așa fel încât să se afișeze doar postările pentru care get_post_meta($post->ID, "project_cat", true)
(care returnează un ID de postare) este egal cu valoarea mea specificată.
Există vreo modalitate de a face acest lucru?
Sunt interesat în special de modalități de a face acest lucru compatibil cu plugin-ul WP-Paginate.

Obiectul WP_Query
acceptă un argument pentru meta datele postării. În general, veți dori să faceți următoarele:
$my_query = new WP_Query(
array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'project_cat',
'value' => 'my-value',
)
),
// Alte proprietăți ale interogării
)
);
Unde 'my-value' reprezintă 'valoarea specificată' de dumneavoastră.
Exemplu de utilizare:
add_action( 'pre_get_posts' , 'my_pre_get_posts' );
function my_pre_get_posts( $query ) {
// Verifică dacă aceasta este interogarea principală și alte condiții, după caz
if( $query->is_main_query() ) {
$query->set(
'meta_query',
array(
array(
'key' => 'project_cat',
'value' => 'my-value'
)
)
);
}
}
Consultați WP_Query, pre_get_posts. Toate condiționalele sunt disponibile pentru dumneavoastră. În prezent, acest cod rulează la fiecare interogare principală - ceea ce probabil nu doriți.
Alternativ, puteți folosi query_posts
(o metodă mai simplă, dar mult mai puțin eficientă) pentru a modifica interogarea doar pentru o instanță specifică într-un șablon.

@TahirYasin - vezi codex.
