0

我正在尝试根据指定的帖子元数据添加帖子过滤器。过滤器效果很好,但是当我选择“所有类型”时,过滤器不会重置,也不会显示任何帖子。

HTML:

<select name="typefilter">
<option value="">All types</option>
<option value="type1">Type 1</option>
<option value="type2">Type 2</option>
<option value="type3">Type 3</option>
</select>

<button>Apply filters</button>

PHP:

if( isset( $_POST['typefilter'] ) ) {
    $args['meta_query'][] = array(
        'key' => 'custom_type',
        'value' => $_POST['typefilter'],
        'compare' => '='
    );
}
4

1 回答 1

1

您的if条件仅检查typefilter密钥是否存在,$_POST但不检查它是否为空。然后,WordPress 会尝试获取custom_type具有以空值调用的自定义字段的帖子。WordPress 无法找到符合该标准的帖子,因此您没有得到任何结果。

在您的if条件下,检查typefilter密钥是否已设置并且它不是空的:

// User wants to filter posts by type
if( isset( $_POST['typefilter'] ) && ! empty( $_POST['typefilter'] ) ) {
    $args['meta_query'][] = array(
        'key' => 'custom_type',
        'value' => $_POST['typefilter'],
        'compare' => '='
    );
}
于 2020-06-11T17:09:02.327 回答