Intereting Posts

Получать комментарии только для определенных пользователей в файле шаблона

Чтобы возвращать комментарии для конкретного пользователя, я использую следующий код:

$arg = array('user_id' => $userID); $coms= get_comments( $arg ); 

Как я могу изменить аргументы этой функции, чтобы получать комментарии для группы пользователей (получать только комментарии для определенных 2 или 3 пользователей)?

Аргумент `user_id 'должен быть целым числом, я не могу найти способ передать массив.

Или я должен использовать PHP или SQL для достижения моей цели?

Ваше время и внимание к этой проблеме приветствуются.

Вы можете попробовать изменить запрос с помощью фильтра comments_clauses :

 $args = array( 'user_id' => 0 ); add_filter( 'comments_clauses', 'custom_comments_clauses'); $comments = get_comments( $args ); remove_filter( 'comments_clauses', 'custom_comments_clauses'); function custom_comments_clauses( $clauses ){ $clauses['where'] = str_replace( 'user_id = 0', 'user_id IN (1, 2, 3)', $clauses['where'] ); return $clauses; } 

Обновить:

Вы также можете добавить настраиваемый параметр my_user_ids к следующему запросу:

 $args = array( 'user_id' => 0, 'my_user_ids' => array(1,2,3) ); add_filter( 'comments_clauses', 'custom_comments_clauses', 99, 2 ); $comments = get_comments( $args ); remove_filter( 'comments_clauses', 'custom_comments_clauses', 99, 2 ); function custom_comments_clauses( $clauses, $query ){ if( isset( $query->query_vars['user_id'] ) && isset( $query->query_vars['my_user_ids'] ) ){ $user_id = $query->query_vars['user_id']; $user_ids = $query->query_vars['my_user_ids']; if( count( $user_ids ) > 0 ){ $from = sprintf( 'user_id = %d', $user_id ); $to = sprintf( 'user_id IN (%s)', join( ',', $user_ids ) ); $clauses['where'] = str_replace( $from, $to, $clauses['where'] ); } } return $clauses; } 

где $my_user_ids – это массив идентификаторов пользователя.