您好,匿名用户
随意问技术百科期待您的加入

WordPress:Warning: Missing argument 2 for wpdb::prepare()

0 投票
add_filter('posts_orderby_request', 'wpjam_search_orderby_filter');
	function wpjam_search_orderby_filter($orderby = ''){
		if(is_search()){
			global $wpdb;
			$keyword = $wpdb->prepare($_REQUEST['s']);
			return "((CASE WHEN {$wpdb->posts}.post_title LIKE '%{$keyword}%' THEN 2 ELSE 0 END) + (CASE WHEN {$wpdb->posts}.post_content LIKE '%{$keyword}%' THEN 1 ELSE 0 END)) DESC, {$wpdb->posts}.post_modified DESC, 	{$wpdb->posts}.ID ASC";
		}else{
			return $orderby;
		}
	}

提示错误:Warning: Missing argument 2 for wpdb::prepare(),

$keyword = $wpdb->prepare($_REQUEST['s']);

就是这一行。

WordPress官方提示http://make.wordpress.org/core/2012/1...

不懂代码,压力山大啊,求修正。

用户头像 提问 2013年 9月21日 @ Caster 上等兵 (256 威望)
分享到:

1个回答

+1 投票
 
最佳答案
global $wpdb;
$sql = "((CASE WHEN {$wpdb->posts}.post_title LIKE '%s' THEN 2 ELSE 0 END) + (CASE WHEN {$wpdb->posts}.post_content LIKE '%s' THEN 1 ELSE 0 END)) DESC, {$wpdb->posts}.post_modified DESC,  {$wpdb->posts}.ID ASC";
$search = esc_sql(urldecode(stripslashes($_REQUEST['s'])));
return sprintf($sql,$search,$search);

这是相关性排序吧?
跟lz说下,wp还对$_REQUEST['s']进行了一些处理.
比如test1 test2
会分成
$wpdb->posts.post_title LIKE '%test1%' and $wpdb->posts.post_title LIKE '%test2%'
其实还会search content,略过

用户头像 回复 2013年 9月21日 @ 切糕 上等兵 (151 威望)
选中 2013年 9月7日 @Caster
提一个问题:

相关问题

+4 投票
1 回复 52 阅读
用户头像 提问 2012年 12月16日 @ Saber 中士 (1,234 威望)
0 投票
1 回复 42 阅读
用户头像 提问 2012年 12月1日 @ Nunu 上等兵 (350 威望)
0 投票
1 回复 33 阅读
0 投票
1 回复 26 阅读
用户头像 提问 2013年 12月29日 @ Nunu 上等兵 (350 威望)
0 投票
0 回复 1 阅读
用户头像 提问 2014年 6月7日 @ Malphite 上等兵 (306 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...