web-dev-qa-db-ja.com

投稿者名で投稿を検索する

特定の作者によって公開されている投稿を検索したいです。このために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と入力して検索すると、空白の結果が表示されます。

それが機能するように私を助けてください。
誰かが私にもっと良い方法を教えてもらえますか?

3
hemc4

この行はおそらく問題です -

$where = "  AND  ( atl_posts.post_author = {$authorID} ) ";

$ whereの内容を置き換えているのであり、変更していません。 .の前に=を使用する必要があります -

$where.= "  AND  ( atl_posts.post_author = {$authorID} ) ";
1
David Gard