設定のディスカッションパネルで、「コメント表示条件」「コメント表示条件 コメントの手動承認を必須にする 」にチェックを入れていない場合、承認待ちコメントの件数表示は行われないようで、そのような場合でも、コメントがあったかどうか管理バーに表示したいという人がいました。
管理バーを表示したときに、最後にコメント一覧ページを開いたときの総コメント件数と、現在のコメント件数を比較して表示するスクリプトを作りました。
テーマの、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' ),
)
);
}
?>