猿问

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

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']);

就是这一行。


皈依舞
浏览 192回答 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,略过
随时随地看视频慕课网APP
我要回答