Edited according to first comments 和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();
}
参见法典
WP_Query reference.