至少在MySQL夢魘中度過了幾天,希望有人能幫助我。我爲WP做了一個標記插件。默認搜索查詢多個表格上的搜索查詢
我的問題聽起來很簡單:爲了保持wordpress數據庫的乾淨和高性能,我決定在額外的表格中保存附加字段(標籤,標題,自由文本,url,...),而不是添加典型的元字段。現在搜索查詢也必須包含這些字段。
幾個小時後,我發現(geoteagging wordpress example):
add_filter('posts_join', 'geotag_search_join');
add_filter('posts_where', 'geotag_search_where');
add_filter('posts_groupby', 'geotag_search_groupby');
到目前爲止好。現在是它重寫查詢(geotag_search_where)的時間,但這裏的噩夢開始了......
自定義表名是:「abc_tags」,字段名爲「abc_title」和「abc_tags」。 「abc_tags」是一個長文本字段,用逗號分隔純文本項目。
我不明白用查詢preg_replace操縱...我希望有人可以幫助。
function geotag_search_where($where)
{
if(is_search()) {
$where = preg_replace(
"/\(\s*post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
"(post_title LIKE $1) OR (geotag_city LIKE $1) OR (geotag_state LIKE $1) OR (geotag_country LIKE $1)", $where);
}
return $where;
}
謝謝。