我想按自定义字段过滤搜索结果
我有一个自定义字段cp_city,我希望用户按城市过滤他们的结果,所以我在搜索框旁边添加了一个城市下拉菜单并更改查询以更改结果但由于某些原因它无效。< / p>
这是我试过的
<?php
$city = isset($_GET['city']) ? trim($_GET['city']) : '';
$s = $_GET['s'];
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts( array('s' => $s, 'scat' => $scat, 'post_type' => 'ads', 'ignore_sticky_posts' => 1, 'meta_key' => 'cp_state', 'meta_value' => $city, 'meta_compare' => 'LIKE', 'paged' => $paged, 'orderby' => 'rand') );
?>
我也试过
function SearchFilter($query) {
if ($query->is_search) {
$query->set('meta_key','cp_state');
$query->set('meta_value','london');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
但两次尝试都失败了。任何人都可以找到正确的解决方案。
答案 0 :(得分:1)
你应该这样做:
<?php
$city = isset($_GET['city']) ? trim($_GET['city']) : '';
$s = $_GET['s'];
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts(
array(
's' => $s,
'scat' => $scat,
'post_type' => 'ads',
'ignore_sticky_posts' => 1,
'meta_query' = > array(
'key' => 'cp_city',
'value' => $city,
'compare' => 'LIKE'
),
'paged' => $paged,
'orderby' => 'rand')
);
&GT;