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?
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} ) ";