web-dev-qa-db-fra.com

Rechercher les messages par nom d'auteur

Je veux rechercher des articles publiés par auteur particulier. Pour cela, j'ai ajouté un filtre dans 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');

Je répète la condition where que cela donne

AND ( atl_posts.post_author = 1 ) 

mais lorsque je recherche en tapant admin, le résultat est vide.

S'il vous plaît aidez-moi à le faire fonctionner.
Quelqu'un peut-il me dire une meilleure façon de le faire?

3
hemc4

Cette ligne est probablement le problème -

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

Vous remplacez le contenu de $ where, sans le changer. Vous devez utiliser . avant = -

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