首先是页面结构部分

<div class="multiple_search_form">
	<form method="get">
		<!-- 输出当前分类页面下的子分类,以下拉菜单的形式输出 -->
		<div class="category-group">
			<?php 

if ( is_category() ) {
$this_category = get_category($cat);
if($this_category->category_parent):
else:
    $args = array(
    'current_category' => 1,
	'show_option_all'    => 'All Categories',
	'show_option_none'   => '',
	'option_none_value'  => '-1',
	'orderby'            => 'ID',
	'order'              => 'ASC',
	'show_count'         => 0,
	'hide_empty'         => 0,
	'child_of'           => $this_category->cat_ID,
	'exclude'            => '',
	'include'            => '',
	'echo'               => 1,
	'selected'           => 0,
	'hierarchical'       => 0,
	'name'               => 'cat',
	'id'                 => '',
	'class'              => 'postform',
	'depth'              => 0,
	'tab_index'          => 0,
	'taxonomy'           => 'category',
	'hide_if_empty'      => false,
	'value_field'	     => 'term_id',
);
   $this_category = wp_dropdown_categories( $args );
endif;
} 
?>
		</div>
		<!-- 输出本站所有的标签,以下拉菜单的形式输出 -->
		<div class="tags-group">
			<?php
			function dropdown_tag_cloud( $args = '' ) {
				$defaults = array(
					'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
					'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
					'exclude' => '', 'include' => ''
				);
				$args = wp_parse_args( $args, $defaults );
				$tags = get_tags( array_merge( $args, array( 'orderby' => 'count', 'order' => 'DESC' ) ) );
				if ( empty( $tags ) )
					return;
				$return = dropdown_generate_tag_cloud( $tags, $args );
				if ( is_wp_error( $return ) )
					return false;
				else
					echo apply_filters( 'dropdown_tag_cloud', $return, $args );
			}
			function dropdown_generate_tag_cloud( $tags, $args = '' ) {
				global $wp_rewrite;
				$defaults = array(
					'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
					'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
				);
				$args = wp_parse_args( $args, $defaults );
				extract( $args );
				if ( !$tags )
					return;
				$counts = $tag_links = array();
				foreach ( ( array )$tags as $tag ) {
					$counts[ $tag->name ] = $tag->count;
					$tag_links[ $tag->name ] = get_tag_link( $tag->term_id );
					if ( is_wp_error( $tag_links[ $tag->name ] ) )
						return $tag_links[ $tag->name ];
					$tag_ids[ $tag->name ] = $tag->term_id;
				}
				$min_count = min( $counts );
				$spread = max( $counts ) - $min_count;
				if ( $spread <= 0 )
					$spread = 1;
				$font_spread = $largest - $smallest;
				if ( $font_spread <= 0 )
					$font_spread = 1;
				$font_step = $font_spread / $spread;
				if ( 'name' == $orderby )
					uksort( $counts, 'strnatcasecmp' );
				else
					asort( $counts );
				if ( 'DESC' == $order )
					$counts = array_reverse( $counts, true );
				$a = array();
				$rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : '';
				foreach ( $counts as $tag => $count ) {
					$tag_id = $tag_ids[ $tag ];
					//$tag_link = clean_url($tag_links[$tag]);
					$tag = str_replace( ' ', '&nbsp;', wp_specialchars( $tag ) );
					$a[] = "<option value='$tag_id'>$tag</option>";
				}
				switch ( $format ):
				case 'array':
					$return = & $a;
					break;
				case 'list':
					$return = "<ul class='wp-tag-cloud'><li>";
					$return .= join( "</li><li>", $a );
					$return .= "</li></ul>";
					break;
				default:
					$return = join( "", $a );
					break;
					endswitch;
					return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args );
			}
			?>
			<select name="the_tag_group" id="the_tag_group">
				<option value="0">All tags</option>
				<?php dropdown_tag_cloud('number=0&order=asc'); ?>
			</select>
		</div>
		<!-- 输出本站文章所有的年份,以下拉菜单的形式输出 -->
		<div class="years-group">
			<?php
			$args = array(
				'type' => 'yearly',
				'limit' => '',
				'format' => 'option',
				'before' => '',
				'after' => '',
				'show_post_count' => false,
				'echo' => 1,
				'order' => 'DESC',
				'post_type' => 'post'
			);
			echo '<select name="the_years_group" id="the_years_group"><option value="0"> All years </option>';
			wp_get_archives( $args );
			echo '</select>';
			?>
		</div>

		<div class="search-group"><input type="submit" value="Search"/>
		</div>
	</form>
</div>

处理表单提交的参数

global $wpdb;
$the_tag_id = $_GET[ 'the_tag_group' ];
$the_cat_id = $_GET[ 'cat' ];
$the_years_string = $_GET[ 'the_years_group' ];
// 将标签的年份输出
function getYearString( $str ) {
	return preg_match( '/([0-9]{4})/', $str, $a ) ? $a[ 1 ] : 0; // 正则表达式从字符串中筛选出连续的4个数字,通常为年份
}
// 执行查询
$args = array(
	'post_type' => 'post',
	'relation' => 'AND',
	'tag_id' => $the_tag_id,
	'cat' => $the_cat_id,
	'date_query' => array(
		array(
			'year' => getYearString( $the_years_string )
		),
	),
);
$searched_posts = new WP_Query( $args );
if ( $searched_posts->have_posts() ) {
	while ( $searched_posts->have_posts() ) {
		$searched_posts->the_post();
		?>
		<!-- 循环输出语句 -->
		<?php }}else{ ?>
		Nothing matched .
		<?php
}

下面的代码是通过URL参数控制当前下拉菜单的选中状态。

function getQueryString( name ) {
		var reg = new RegExp( '(^|&)' + name + '=([^&]*)(&|$)', 'i' );
		var r = window.location.search.substr( 1 ).match( reg );
		if ( r != null ) {
			return unescape( r[ 2 ] );
		}
		return null;
	}
	// 这样调用:
	var catId = getQueryString( "cat" );
	var tagId = getQueryString( "the_tag_group" );
    var yearNum = getQueryString( "the_years_group" );
	jQuery( ".category-group" ).find( 'option[value=' + catId + ']' ).attr( "selected", "selected" );
	jQuery( ".tags-group" ).find( 'option[value=' + tagId + ']' ).attr( "selected", "selected" );
        jQuery( "#the_years_group" ).find( 'option[value='+'"'+yearNum+'"'+']' ).attr( "selected", "selected" );