Как показать комментарии только от гостей?

 

Ну почему его нет по умолчанию?

Почему-то в админке для комментариев есть только один фильтр – показывать либо комментарии либо уведомления. А если я хочу посмотреть комментарии только от одного пользователя? или скажем наоборот исключить?

Вот недавно мне понадобилось посмотреть каменты только от гостей. Слава богу эта проблема решается очень просто.

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

www.yoursite.com/wp-admin/edit-comments.php?user_id=0

 

Как показать только свои собственные комментарии?

 

почти плагин

В свое время я сталкивался с плагином my-comment. Он уже давненько не обновлялся, поэтому не знаю как у него совместимость с нынешним движком. Самое интересно, что этот элементарный твик, фактически, эквивалентен этому плагину :)

Просто вместо нуля введите свой user_id, например:

www.yoursite.com/wp-admin/edit-comments.php?user_id=1

и вуаля, WordPress покажет только Ваши каменты.

 

Как показать комментарии гостей в «Консоли»?

 

Для этого придется маленько повозиться с кодом. Допишите в конец вашего functions.php, который лежит в директории ваше темы, следующий код.

<?php function add_AAArecent_comments_dashboard_widget() {
  $AAArecent_comments_title = __( 'Recent Answers', 'AAA' );
  wp_add_dashboard_widget( 'dashboard_AAArecent_comments', $AAArecent_comments_title, 
                           'wp_dashboard_AAArecent_comments', 'wp_dashboard_recent_comments_control' );
}
 
add_action('wp_dashboard_setup', 'add_AAArecent_comments_dashboard_widget');
 
function wp_dashboard_AAArecent_comments() {
	global $wpdb;
 
	if ( current_user_can('edit_posts') )
		$allowed_states = array('0', '1');
	else
		$allowed_states = array('1');
 
	// Select all comment types and filter out spam later for better query performance.
	$comments = array();
	$start = 0;
 
	$widgets = get_option( 'dashboard_widget_options' );
	$total_items = isset( $widgets['dashboard_recent_comments'] ) && isset( $widgets['dashboard_recent_comments']['items'] )
		? absint( $widgets['dashboard_recent_comments']['items'] ) : 5;
 
	while ( count( $comments ) < $total_items && $possible = $wpdb->get_results( 
"SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' 
AND user_id=0 ORDER BY c.comment_date_gmt DESC LIMIT $start, 50"
) ) {
 
		foreach ( $possible as $comment ) {
			if ( count( $comments ) >= $total_items )
				break;
			if ( in_array( $comment->comment_approved, $allowed_states ) && 
                             current_user_can( 'read_post', $comment->comment_post_ID ) )
				$comments[] = $comment;
		}
 
		$start = $start + 50;
	}
 
	if ( $comments ) :
?>
 
		<div id="the-comment-list" class="list:comment">
<?php
		foreach ( $comments as $comment )
			_wp_dashboard_recent_comments_row( $comment );
?>
 
		</div>
 
<?php
		if ( current_user_can('edit_posts') ) { ?>
			<?php _get_list_table('WP_Comments_List_Table')->views(); ?>
<?php	}
 
		wp_comment_reply( -1, false, 'dashboard', false );
		wp_comment_trashnotice();
 
	else :
?>
 
	<p><?php _e( 'No comments yet.' ); ?></p>
 
<?php
	endif; // $comments;
}

WP рулит

Первая функция добавляет к dashboard наш новый виджет. Вторая функция вешает хук на инициализацию dashboard’а. Третья функция это собственно сам виджет.

От стандартного виджета (свежие комментарии) этот отличается только маленькой добавкой AND user_id=0. Все, easy.

Конечно, надо добавить, что AAA в этом коде, это префикс вашей темы. Например, для стандартной темы Twenty Eleven вместо AAA следует вставить twentyeleven.

После этого в Консоли появится новый виджет – Recent Answers. Если Вы хотите русифицировать эту надпись, то следует отредактировать Ваш ru_RU.po файл. Но об этом в следующий раз :)