我正在尝试实现基于标记的搜索。当我指定某些标记时,将搜索标记的帖子,并显示与搜索条件匹配的帖子id。
目前它只适用于单个标记。
$query = "SELECT DISTINCT $wpdb->posts.ID FROM $wpdb->terms
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->terms.term_id = $wpdb->term_taxonomy.term_id)
LEFT JOIN $wpdb->term_relationships ON ($wpdb->terms.term_id = $wpdb->term_relationships.term_taxonomy_id)
LEFT JOIN $wpdb->posts ON ($wpdb->term_relationships.object_id = $wpdb->posts.ID)
WHERE $wpdb->term_taxonomy.taxonomy = \'post_tag\' " . $substring;
子字符串如下所示:
$substring = "AND $wpdb->terms.slug IN (\'tag1\',\'tag2\')"
这就是问题所在。它不寻找符合所有标准的单个帖子。相反,它“收集”所有帖子,并搜索所有标签。
例如:
// postid1 -> tag1
// postid2 -> tag2
// postid3 -> tag1, tag2
$substring = "AND $wpdb->terms.slug IN (\'tag1\')"
//Output: postid1, postid3 - - - CORRECT
$substring = "AND $wpdb->terms.slug IN (\'tag1\',\'tag2\')"
//Output: postid1, postid2, postid3 - - -WRONG!
//Expected: postid3
到目前为止,我不知道如何在一个mysql查询中解决它。也许我错过了什么。提前感谢您的帮助。