Interogare postări și tip personalizat de postare cu cheie meta
Încerc să interoghez tipul personalizat de postare ai1ec_event al calendarului all-in-one-event-calendar și postările normale WordPress într-un slider pe pagina principală. Asta funcționează destul de bine.
Acum vreau să interoghez doar postările care au valoarea câmpului personalizat "teaser", dar asta returnează doar postările normale, nu și evenimentele.
<?php
query_posts( array(
'post_type'=>array('post','ai1ec_event'),
'posts_per_page' => 50,
'meta_query' => array(
array(
'key' => 'teaser',
'value' => 'on'
)
)
);
?>
Chiar dacă omit interogarea tipului de postare:
<?php
query_posts( array(
'meta_query' => array(
array(
'key' => 'teaser',
'value' => 'on'
)
)
);
?>
returnează doar postări, nu evenimente.

Din păcate, WP_Query nu poate prelua (Postări cu câmp personalizat) sau (ai1ec_event). Va trebui să interogați prima, apoi pe a doua și să îmbinați aceste array-uri. Folosiți WP_Query în loc de query_posts.
Tocmai am încercat pe instalarea mea locală și acest cod apelat din index.php al temei twentytwelve funcționează (returnează postarea cu titlul "Hello post" și ai1ec_event cu titlul "Event" - ambele având câmpul personalizat "teaser" cu valoarea "on"
$events_query = new WP_Query( array('post_type' => array('ai1ec_event', 'post'), 'meta_query' => array( array( 'key' => 'teaser', 'value' => 'on' ) )) );
while ( $events_query->have_posts() ) :
$events_query->the_post();
echo get_the_title() . '<br/>';
endwhile;
Trebuie să menționez că ambele (postarea și evenimentul) au fost create de utilizatorul admin - am verificat codul și există o parte extensivă cu capabilități personalizate.

Nu cred că va funcționa. Am raportat comportamentul greșit. Vezi întrebarea corectată mai sus. Nu am observat inițial, dar includerea interogării meta key returnează ÎNTOTDEAUNA doar postările.

Tocmai am verificat această sarcină pe instalarea mea locală - am modificat răspunsul de mai sus.

Am verificat de două ori: Pentru mine returnează doar postări. Care ar putea fi motivul pentru acest comportament?

Am înțeles: Sintaxa exactă trebuie să fie: 'meta_query' => array( array( 'key' => 'teaser', 'value' => '"on"', 'compare' => 'LIKE' ) )
Nu sunt sigur dacă codul meu original ar fi funcționat, dar ai fost de mare ajutor, așa că voi marca răspunsul tău ca fiind corect. Mulțumesc!
