【发布时间】:2014-05-09 15:48:58
【问题描述】:
目前我已经构建了一个包含 3 个变量的搜索功能。一是要搜索的词,二是省(自定义字段),三是城市(自定义字段)。
目前它的工作方式如下:
$province = $wp_query->query_vars['province'];
$city = $wp_query->query_vars['city'];
if ( !empty( $wp_query->query_vars['s'] ) && !empty( $province ) && !empty( $city ) ) {
$where .= " AND (($wpdb->postmeta.meta_key = 'province' AND $wpdb->postmeta.meta_value LIKE '" . $province . "') AND ($wpdb->postmeta.meta_key = 'city' AND $wpdb->postmeta.meta_value LIKE '" . $city . "'))";
} else if ( !empty( $wp_query->query_vars['s'] ) && !empty( $province ) ) {
$where .= " AND ($wpdb->postmeta.meta_key = 'province' AND $wpdb->postmeta.meta_value LIKE '%" . $province . "%') ";
} else if ( !empty( $wp_query->query_vars['s'] ) && !empty( $city ) ) {
$where .= " AND ($wpdb->postmeta.meta_key = 'city' AND $wpdb->postmeta.meta_value LIKE '%" . $city . "%') ";
}
如果我尝试按术语和省份进行搜索,则会返回我期望的结果。然后,当我尝试按城市(3 个参数)搜索时,按省的所有帖子都没有返回结果。如果我改变:
有与
$where .= " AND (($wpdb->postmeta.meta_key = 'province' AND $wpdb->postmeta.meta_value LIKE '" . $province . "') AND ($wpdb->postmeta.meta_key = 'city' AND $wpdb->postmeta.meta_value LIKE '" . $city . "'))";
有或
$where .= " AND (($wpdb->postmeta.meta_key = 'province' AND $wpdb->postmeta.meta_value LIKE '" . $province . "') AND ($wpdb->postmeta.meta_key = 'city' AND $wpdb->postmeta.meta_value LIKE '" . $city . "'))";
然后返回结果,除了查询没有选择 city LIKE 语句而是显示所有城市而不是向下钻取到特定城市。
任何帮助将不胜感激。
【问题讨论】:
-
你从哪里得到这个语法?
$wpdb用法通常类似于$wpdb->get_results(QUERY),在实际查询中不使用$wpdb.. -
$wpdb->postmeta 输出表
标签: php mysql sql wordpress full-text-search