2016-11-26 63 views
3

我在wordpress中寫了一個搜索查詢,它搜索'post_title','post_content'&'meta_query'。而不是使用WP_Query Search的參數,我可以使用WP_Query的'post'&'meta_query'的相關參數與'OR'結合使搜索查詢匹配'post_title'和'post_content'只傳遞WP_Query的相關參數?或者是有辦法與WPDB $手動編寫查詢象下面這樣:如何在沒有WP_Query的情況下搜索帖子的'title','content'和'meta_query'?

global $wpdb; 
$query= "SELECT wp_dxwe_posts.* FROM `wp_posts` WHERE 
(wp_posts.post_status IN ('$status_array') AND 
wp_posts.post_type='messages') AND 
(wp_posts.post_title LIKE '%$keyword%' OR wp_posts.post_content 
LIKE '%$keyword%') AND (wp_postmeta.meta_key == 'my_meta_key' AND 
wp_postmeta.meta_value LIKE '%$keyword%') "; 

$my_query = $wpdb->get_results($query); 

任何一個可以請告訴我怎麼樣?提前致謝。

我得到了下面的MySQL結果查詢:

SELECT * FROM `wp_dxwe_posts` wp 
INNER JOIN `wp_dxwe_postmeta` wm ON (wm.`post_id` = wp.`ID`) 
WHERE wp.`post_status` IN ('publish,pending,draft') 
AND wp.`post_type`='messages' 
AND (wp.`post_title` LIKE '%prasad%' OR 
wp.`post_content` LIKE '%prasad%') 
    AND wm.`meta_key` = 'inistitute_name' 
    AND wm.`meta_value` LIKE '%some_institute_name%' 
+0

您的自定義查詢將作品......你面對什麼問題? –

+0

@Happy編碼,首先,感謝您的快速回復。當我在PhpMyAdmin中運行該查詢時,它給了我錯誤,如「#1054 - 'where子句'中的未知列'wp_postmeta.meta_key'」 –

+0

您必須指出*意味着什麼不起作用*。現在有什麼問題,你有新的SQL結果查詢? –

回答

0

使用自定義查詢的方式如下:

SELECT * FROM `wp_posts` wp 
    INNER JOIN `wp_postmeta` wm ON (wm.`post_id` = wp.`ID`) 
     WHERE wp.`post_status` IN ('$status_array') 
     AND wp.`post_type`='messages' 
     AND (wp.`post_title` LIKE '%$keyword%' OR 
wp.`post_content` LIKE '%$keyword%') 
     AND wm.`meta_key` = 'my_meta_key' 
     AND wm.`meta_value` LIKE '%$keyword%' 
+0

這爲什麼有效?僅有代碼的答案不是很有幫助。此外,如果你實際上將其格式化爲更具可讀性,那將會很不錯... –

+0

@cale_b,我試過了,但它不工作。它給出了我在上面添加的結果。 –

+0

@prasadchinthala澄清你想用這個查詢做什麼。加。給你的意見它給錯誤「#1054 - 未知列」的WHERE子句「wp_postmeta.meta_key'..我提供了自定義查詢。現在你面臨什麼問題 –

相關問題