J'espère avoir une question facile. J'ai ma requête ici, qui utilise ACF
<?php query_posts(array('post_type' => 'our-clients-list', 'posts_per_page' => 1, 'order' => 'DSC', 'orderby' => 'Rand','paged'=> $paged)); ?>
<?php while(have_posts()) : the_post(); ?>
<?php the_field('testimonial_'); ?>
<?php endwhile; ?>
<?php wp_reset_query();?>
Il existe donc un champ dans mon type de message personnalisé appelé 'testimonial_'. J'aimerais uniquement exécuter la requête lorsque le champ personnalisé n'est pas vide, donc! = '', Mais vous ne savez pas comment procéder. Tout le monde peut m'aider ou me donner un indice?
Je pense que cela devrait fonctionner, mais je ne suis pas sûr à 100% de la méta requête avancée pour "pas" une chaîne nulle. Ce n'est pas normalement comment les méta-requêtes sont utilisées. En tant que tel, j'ai laissé la ligne set_transient
commentée. Je viens de remarquer que vous essayez de tirer 1 message au hasard, vous ne voudrez donc peut-être pas utiliser l’API Transients , mais je pense que ce serait quand même une bonne idée si le délai était plus court. le transitoire réglé pour stocker pendant 1 heure. Sinon, vous pouvez toujours extraire les parties de la requête.
// Get any existing copy of our transient data
if ( false === ( $custom_testimonials = get_transient( 'custom_testimonials' ) ) ) {
// It wasn't there, so regenerate the data and save the transient
// params for our query
array(); ?
$args = array(
'post_type' => 'our-clients-list'
'posts_per_page' => 1,
'orderby' => 'Rand'
'meta_key' => '_featured',
'meta_value' => 'yes',
'meta_query' => array(
array(
'key' => 'testimonial_',
'value' => '',
'compare' => '!='
)
)
);
// The Query
$custom_testimonials = new WP_Query( $args );
// store the transient - uncomment when sure the query is working (stores for 1 hour)
// set_transient( 'custom_testimonials', $custom_testimonials, 60*60*1 );
}
// Use the data like you would have normally...
// The Loop
if ( $custom_testimonials ) :
echo '<ul class="testimonial">';
while ( $custom_testimonials->have_posts() ) :
$custom_testimonials->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
echo '</ul>';
else :
echo 'No testimonials found.';
endif;
/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();
Excellente référence sur Advanced Meta Queries