未処理のコメントを、管理バーに表示する

設定のディスカッションパネルで、「コメント表示条件」「コメント表示条件 コメントの手動承認を必須にする 」にチェックを入れていない場合、承認待ちコメントの件数表示は行われないようで、そのような場合でも、コメントがあったかどうか管理バーに表示したいという人がいました。

管理バーを表示したときに、最後にコメント一覧ページを開いたときの総コメント件数と、現在のコメント件数を比較して表示するスクリプトを作りました。

テーマの、functions.phpに以下のコードを追加することで、表示できます。

<?php
add_action( 'admin_head-edit-comments.php', 'nobita_comment_update' );
add_action( 'admin_bar_menu', 'nobita_add_admin_menu' ,99);

function nobita_pending_comment_coount() {

	$current_comments_count= wp_count_comments();
	$current_comments_count= $current_comments_count->total_comments;

	$old_comments_count	= get_option( 'nobita_comment_count' );
	$style= 'background-image: url('. home_url(). '/wp-includes/images/admin-bar-sprite.png);
background-position: -1px -134px;
background-repeat: no-repeat;display:inline-block;width:16px;height:16px;margin-top:3px';
	
	if ( $current_comments_count > $old_comments_count ) {
	
		$count= $current_comments_count - $old_comments_count;
	
		$num	= ' <span style="color:red">New</span> <span style="'. $style. '"></span> <span>'.$count.'</span>';
		return $num;
	}
	return ' <span style="'. $style. '"></span> <span>'. $current_comments_count. '/'. $old_comments_count. '</span>';
}

function nobita_comment_count_update(){

	$current_comments_count= (int) count( get_comments( ) );
	update_option( 'nobita_comment_count', $current_comments_count ); 
}

function nobita_comment_update( ){

		nobita_comment_count_update();
}

function nobita_add_admin_menu( $wp_admin_bar ) {

 $wp_admin_bar->add_menu(
			array(
				'id' => 'pending_comments',
				'title'=> nobita_pending_comment_coount(),
				'href' => admin_url( 'edit-comments.php?comment_status=moderated' ),
				'meta' => array( 'class'=> 'nobita_comment_count' ),
			)
		);
}
?>

WordPress Forum ja