如果 post 没有特定的元键,如何获取所有 post?

How to get all posts if post don't have specific meta key?

我正在尝试根据指定的 post 元数据添加 post 过滤器。过滤器效果很好,但是当我 select "All types" 过滤器没有重置并且没有显示 post 时。

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' => '='
    );
}

您的 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' => '='
    );
}