我有以下数组`$ args:
$args = array(
'posts_per_page' => 100,
'post_type' => array('product', 'product_variation'),
'product_cat' => 'Caravans',
'tax_query' => array(
array(
'taxonomy' => 'pa_berth',
'field' => 'name',
'terms' => array( $berth ),
'include_children' => true,
'operator' => 'IN'
)
),
);
我正在设置POST的$berth
值。但是,$ berth并不总是从post设置,但'terms'
键总是需要一个值(在这种情况下,它需要是1,2,3,4,5,6)。我试图用以下条件来解决这个问题。
if(isset($_POST['berth'])) {
$berth = (int)$_POST['berth'];
}
else {
$berth = 1,2,3,4,5,6;
}
所以如果没有在帖子上设置'berth',我试图传递那些整数。但是这不是有效的PHP。这里最好的解决方案是什么?
答案 0 :(得分:2)
您希望$berth
成为数组。
如果未从$_POST
设置,则需要设置默认值。
以下代码解决了这两个问题:
if (isset($_POST['berth'])) {
$berth = (int)$_POST['berth'];
$berth = array($berth);
}
else {
$berth = array(1,2,3,4,5,6);
}
此外,将最新部分更改为(直接将$berth
作为数组传递,而不是创建一个以$berth
作为第一个元素的新数组。
...
array(
'taxonomy' => 'pa_berth',
'field' => 'name',
'terms' => $berth,
'include_children' => true,
'operator' => 'IN'
)
...
答案 1 :(得分:1)
无需复杂化,您可以执行以下操作:
if(isset($_POST['berth'])) {
$berth = array( (int) $_POST['berth'] );
}
else {
$berth = array( 1,2,3,4,5,6 );
}
这样你总是确保$ berth变量是一个数组然后你可以将数组本身传递给terms字段,如下所示:
$args = array(
'posts_per_page' => 100,
'post_type' => array('product', 'product_variation'),
'product_cat' => 'Caravans',
'tax_query' => array(
array(
'taxonomy' => 'pa_berth',
'field' => 'name',
'terms' => $berth,
'include_children' => true,
'operator' => 'IN'
)
),
);