Ich möchte nach Beiträgen suchen, die von einem bestimmten Autor veröffentlicht wurden. Zu diesem Zweck habe ich in functions.php
einen Filter hinzugefügt:
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');
Es gibt die where
Bedingung wieder, die es gibt
AND ( atl_posts.post_author = 1 )
wenn ich aber admin
eingebe, wird ein leeres Ergebnis angezeigt.
Bitte helfen Sie mir, damit es funktioniert.
Kann mir jemand einen besseren Weg nennen, es zu tun?
Diese Zeile ist wahrscheinlich das Problem -
$where = " AND ( atl_posts.post_author = {$authorID} ) ";
Sie ersetzen den Inhalt von $ where, ohne ihn zu ändern. Sie müssen .
vor =
verwenden -
$where.= " AND ( atl_posts.post_author = {$authorID} ) ";