【发布时间】:2019-12-11 22:19:07
【问题描述】:
我有一个 WordPress 查询并按类别使用复选框进行过滤:
if( isset( $_POST['vertragsart'] ) && isset ($_POST['zeitmodell']) ) {
$args['tax_query'][] = array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['vertragsart']
),
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['zeitmodell']
),
);
} elseif( !isset( $_POST['vertragsart'] ) && isset ($_POST['zeitmodell']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['zeitmodell']
);
} elseif( isset( $_POST['vertragsart'] ) && !isset ($_POST['zeitmodell']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['vertragsart']
);
}
这可以正常工作。在页面加载时,他会向我显示所有结果,并且用户可以使用复选框来限制结果。
现在我想添加第三个类别过滤器 - 知道怎么做吗?我认为它会更复杂,因为它比 if/else 更复杂。
我试过了,但是当涉及到第三个过滤器时,它只会显示所有内容:
if( isset( $_POST['vertragsart'] ) && !isset ($_POST['zeitmodell']) && isset ($_POST['fachbereich']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['vertragsart']
);
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['fachbereich']
);
} elseif( isset( $_POST['vertragsart'] ) && isset ($_POST['zeitmodell']) && !isset ($_POST['fachbereich']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['vertragsart']
);
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['zeitmodell']
);
} elseif( isset( $_POST['vertragsart'] ) && !isset ($_POST['zeitmodell']) && isset ($_POST['fachbereich']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['vertragsart']
);
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['fachbereich']
);
} elseif( !isset( $_POST['vertragsart'] ) && !isset ($_POST['zeitmodell']) && isset ($_POST['fachbereich']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['fachbereich']
);
} elseif( isset( $_POST['vertragsart'] ) && !isset ($_POST['zeitmodell']) && !isset ($_POST['fachbereich']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['vertragsart']
);
} elseif( !isset( $_POST['vertragsart'] ) && isset ($_POST['zeitmodell']) && !isset ($_POST['fachbereich']) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['zeitmodell']
);
// this won't work
} elseif( isset( $_POST['vertragsart'] ) && isset ($_POST['zeitmodell']) && isset ($_POST['fachbereich']) ) {
$args['tax_query'][] = array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['vertragsart']
),
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['zeitmodell']
),
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['fachbereich']
),
);
}
【问题讨论】: