特定の作者によって公開されている投稿を検索したいです。このためにfunctions.php
にフィルターを追加しました。
function wpse_29570_where_filter($where){
global $wpdb;
if( is_search() ) {
$search= get_query_var('s');
$query=$wpdb->prepare("SELECT $wpdb->users.ID FROM $wpdb->users WHERE $wpdb->users.display_name LIKE '%%%s%%' ", $search );
$authorID= $wpdb->get_var( $query );//die;
if($authorID){
$where = " AND ( atl_posts.post_author = {$authorID} ) ";
}
//echo $where;
}
return $where;
}
add_filter('posts_where','wpse_29570_where_filter');
それが与えるwhere
条件を反映しています
AND ( atl_posts.post_author = 1 )
admin
と入力して検索すると、空白の結果が表示されます。
それが機能するように私を助けてください。
誰かが私にもっと良い方法を教えてもらえますか?
この行はおそらく問題です -
$where = " AND ( atl_posts.post_author = {$authorID} ) ";
$ whereの内容を置き換えているのであり、変更していません。 .
の前に=
を使用する必要があります -
$where.= " AND ( atl_posts.post_author = {$authorID} ) ";