2016-11-26 64 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'..我提供了自定义查询。现在你面临什么问题 –

相关问题