如果 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' => '='
);
}
我正在尝试根据指定的 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' => '='
);
}