如何过滤内容?
How to filter content?
我正在设置带有高级自定义字段和自定义 post 类型的 属性 页面。我需要能够按卧室数量、价格、位置等过滤属性。我已经能够按卧室数量过滤属性,但我不知道如何同时应用两个过滤器。例如,我创建了一个名为 test 的 acf 字段,它具有以下值;一、二和三。现在我想显示一个 属性,它有 5 个卧室,测试值为 3。我怎样才能改变我的代码来做到这一点?
$GLOBALS['my_query_filters'] = array(
'field_1' => 'bedrooms',
'field_2' => 'test',
);
add_action('pre_get_posts', 'my_pre_get_posts');
function my_pre_get_posts( $query ){
// bail early if is in admin
if( is_admin() ){
return;
}
// get meta query
$meta_query = $query->get('meta_query');
foreach( $GLOBALS['my_query_filters'] as $key => $name ) {
if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'property' ) {
if( isset($_GET[ $name ]) ){
$value = explode(',', $_GET[ $name ]);
$meta_query[] = array(
'key' => $name,
'value' => $value,
'compare' => 'IN',
);
}
}
}
// update meta query
$query->set('meta_query', $meta_query);
return;
}
您可以直接 运行 在您要显示自定义帖子的模板文件中进行这些查询。您还可以在关系之后和默认变量中添加更多字段。
<?php
$defaults = array(
'numberposts' => -1,
'category' => 0, 'orderby' => 'date',
'order' => 'DESC', 'include' => array(),
'exclude' => array(),'post_type' => 'your_custom_post_type',
'meta_key','meta_value',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'custom_field_name1',
'value' => $custom_field_value1,
),
array(
'key' => 'custom_field_name2',
'value' => $custom_field_name2,
)
));
$query = get_posts($defaults);
?>
我正在设置带有高级自定义字段和自定义 post 类型的 属性 页面。我需要能够按卧室数量、价格、位置等过滤属性。我已经能够按卧室数量过滤属性,但我不知道如何同时应用两个过滤器。例如,我创建了一个名为 test 的 acf 字段,它具有以下值;一、二和三。现在我想显示一个 属性,它有 5 个卧室,测试值为 3。我怎样才能改变我的代码来做到这一点?
$GLOBALS['my_query_filters'] = array(
'field_1' => 'bedrooms',
'field_2' => 'test',
);
add_action('pre_get_posts', 'my_pre_get_posts');
function my_pre_get_posts( $query ){
// bail early if is in admin
if( is_admin() ){
return;
}
// get meta query
$meta_query = $query->get('meta_query');
foreach( $GLOBALS['my_query_filters'] as $key => $name ) {
if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'property' ) {
if( isset($_GET[ $name ]) ){
$value = explode(',', $_GET[ $name ]);
$meta_query[] = array(
'key' => $name,
'value' => $value,
'compare' => 'IN',
);
}
}
}
// update meta query
$query->set('meta_query', $meta_query);
return;
}
您可以直接 运行 在您要显示自定义帖子的模板文件中进行这些查询。您还可以在关系之后和默认变量中添加更多字段。
<?php
$defaults = array(
'numberposts' => -1,
'category' => 0, 'orderby' => 'date',
'order' => 'DESC', 'include' => array(),
'exclude' => array(),'post_type' => 'your_custom_post_type',
'meta_key','meta_value',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'custom_field_name1',
'value' => $custom_field_value1,
),
array(
'key' => 'custom_field_name2',
'value' => $custom_field_name2,
)
));
$query = get_posts($defaults);
?>