Je dois filtrer les publications par une valeur de champ personnalisée.
Mon exemple spécifique:
J'ai vérifié beaucoup de réponses, mais aucun cas n'a été aussi simple. Je pensais le faire en utilisant une recherche personnalisée ou un plugin, mais je ne sais vraiment pas par où commencer. Merci de votre aide.
EDIT: les valeurs de champ personnalisées sont fixes et ne sont pas renseignées automatiquement. Le select peut être construit en HTML simple sans requêtes supplémentaires.
Edité selon les premiers commentaires et le code Pastebin:
<?php /* You can also leave 'action' blank: action="" */ ?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<select name="my_size" id="size" class="postform" onchange="submit();">
<option selected="selected">Choose a size</option>
<option value="10">10</option>
<option value="20">20</option>
</select>
</form>
<?php /* Reset filter */ ?>
<p><a href="<?php the_permalink(); ?>">Clear filter</a></p>
<?php
if( !isset($_POST['my_size']) || '' == $_POST['my_size']) {
// unfiltered product list here
}
else {
// Get dropdown value
// Don't forget to sanitize this!
$size = $_POST['my_size'];
// Create new query
$query = new WP_Query( array(
'post_type'=> 'product', // your CPT
'post_status' => 'publish',
'meta_key' => 'size',
'meta_value' => $size, // Dropdown value
) );
// Loop
if($query->have_posts()):
while( $query->have_posts() ): $query->the_post();
// Product content
endwhile;
endif;
// reset query to default
wp_reset_postdata();
}
Voir Codex pour Référence WP_Query .