web-dev-qa-db-fra.com

Possibilité de rechercher par nom d'auteur avec la fonction de recherche par défaut de WordPress?

Je me rends compte que l'amélioration de la fonction de recherche de WordPress est une énorme boîte de Pandore, mais la SEULE chose supplémentaire dont j'ai besoin est de montrer les résultats lorsque je recherche le nom d'un auteur.

Par exemple, si nous avons un auteur nommé Katie Johnson et que je recherche Katie, je reçois des résultats dans lesquels son nom est répertorié dans le CONTENU, mais pas dans les résultats affichés.

Cela semble être un problème simple, et pourtant je n’ai pas encore trouvé de solution.

Merci.

7
zack

Peut-être que vous pouvez essayer d'ajouter votre condition directement dans la chaîne de requête, en utilisant quelque chose comme ceci

function wpse_29570_where_filter($where){
        global $wpdb;
        if( is_search() ) {
            $search= get_query_var('s');
            $query=$wpdb->prepare("SELECT user_id  FROM $wpdb->usermeta WHERE ( meta_key='first_name' AND meta_value LIKE '%%%s%%' ) or ( meta_key='last_name' AND meta_value LIKE '%%%s%%' )", $search ,$search);
            $authorID= $wpdb->get_var( $query );

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

         }
         return $where;
    }

    add_filter('posts_where','wpse_29570_where_filter');
6
hacksy