我在搜索表单中使用了两次wp\\u下拉菜单\\u categories,一次用于类别,另一次用于自定义分类法。选择“全部”选项时,结果页中不会显示任何结果。所有类别的term\\u id为“0”,正如在URL中显示的那样。从下拉列表中选择类别和自定义分类法时,效果良好。
下面是我的查询和下拉列表:
if ( isset($_GET[\'cat\']) && isset($_GET[\'manufacturer\']) ) {
$tax_query = array( \'relation\' => \'AND\' );
array_push($tax_query,
array(
\'taxonomy\' => \'manufacturers\',
\'field\' => \'term_id\',
\'terms\' => $_GET[\'manufacturer\'],
),
array(
\'taxonomy\' => \'category\',
\'field\' => \'term_id\',
\'terms\' => $_GET[\'cat\'],
)
);
};
if ( ( $_GET[\'cat\'] == 0 ) || ( $_GET[\'manufacturer\'] == 0 ) ) {
$tax_query = \'\'
};
$query_args = array(
\'post_type\' => \'yacht\',
\'meta_or_tax\' => true,
\'tax_query\' => $tax_query,
\'posts_per_page\' => -1,
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'yachts_loa_length_round\',
\'value\' => array($_GET[\'min_length\'], $_GET[\'max_length\']),
\'compare\' => \'BETWEEN\',
\'type\' => \'NUMERIC\',
),
array(
\'key\' => \'yachts_price\',
\'value\' => array($_GET[\'min_price\'], $_GET[\'max_price\']),
\'compare\' => \'BETWEEN\',
\'type\' => \'NUMERIC\',
),
array(
\'key\' => \'yachts_year\',
\'value\' => array($_GET[\'min_year\'], $_GET[\'max_year\']),
\'compare\' => \'BETWEEN\',
\'type\' => \'NUMERIC\',
)
)
);
$yacht_query = new WP_Query( $query_args );
$args = array(
\'orderby\' => \'menu_order\',
\'show_option_all\' => pll__(\'All \'),
\'order\' => \'ASC\',
\'hide_empty\' => 0,
\'exclude\' => -1,
\'name\' => \'cat\',
\'class\' => \'form-select\',
\'taxonomy\' => \'category\',
);
wp_dropdown_categories( $args ); ?>
<?php
$args = array(
\'orderby\' => \'menu_order\',
\'show_option_all\' => pll__(\'All\'),
\'order\' => \'ASC\',
\'hide_empty\' => 0,
\'exclude\' => -1,
\'name\' => \'manufacturer\',
\'class\' => \'form-select\',
\'taxonomy\' => \'manufacturers\',
);
wp_dropdown_categories( $args ); ?>