【问题标题】:WordPress Post Meta Like Query Does Not Recognize Second Like StatementWordPress Post Meta Like Query 无法识别第二个 Like 语句
【发布时间】: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


【解决方案1】:

您必须将 wp_postmeta 加入 wp_post 3 次(加入后也按帖子 ID 分组),然后您的查询才会起作用。现在每个帖子都在一行中,它有一个 meta_key 和一个 meta_value。 (您将所有条件都放在 AND 运算符中,它也不起作用,它只能与 OR 一起使用,但我想您想要包含所有搜索词的帖子)。

问候

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多