我在搜索表单中使用了下拉类别功能。当我使用选项" ALL"它没有显示任何结果,我希望显示所有类别的所有帖子。我错过了什么?
以下是我的询问:
if ( isset($_GET['cat']) && isset($_GET['manufacturer']) ) {
$tax_query = array( 'relation' => 'AND' );
array_push($tax_query,
array(
'taxonomy' => 'manufacturers',
'field' => 'id',
'terms' => $_GET['manufacturer']
),
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_GET['cat']
)
);
}
$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 );
和我的php函数:
$args = array(
'orderby' => 'menu_order',
'show_option_all' => pll__('All '),
'order' => 'ASC',
'hide_empty' => 0,
'class' => 'form-select',
'taxonomy' => 'category',
'value_field' => 'term_id'
);
wp_dropdown_categories( $args ); ?>
$args = array(
'orderby' => 'menu_order',
'show_option_all' => pll__('All'),
'order' => 'ASC',
'hide_empty' => 0,
'name' => 'manufacturer',
'class' => 'form-select',
'taxonomy' => 'manufacturers',
'value_field' => 'term_id'
);
wp_dropdown_categories( $args ); ?>
答案 0 :(得分:0)
在wordpress.stackexchange.com上使用@Milo的帮助管理解决它
$tax_query = '';
if( isset($_GET['cat']) && 0 != $_GET['cat'] ) {
$tax_query[] = array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $_GET['cat']
);
}
if( isset($_GET['manufacturer']) && 0 != $_GET['manufacturer'] ) {
$tax_query[] = array(
'taxonomy' => 'manufacturers',
'field' => 'term_id',
'terms' => $_GET['manufacturers']
);
}
// only add relation if both are set and non-zero
if( isset($_GET['manufacturer']) && 0 != $_GET['manufacturer'] && isset($_GET['cat']) && 0 != $_GET['cat'] ) {
$tax_query['relation'] = 'AND';
}
// query args for all queries
$query_args = array(
'post_type' => 'yacht',
// other args...
);
// add tax query if it isn't empty
if( !empty( $tax_query ) ){
$query_args['tax_query'] = $tax_query;
}
$yacht_query = new WP_Query( $query_args );