WordPress のプラグイン [ WordPress Popular Posts ] で記事の表示数を管理画面の投稿一覧に表示してソート可能にする方法です。
記事の表示数を管理画面の投稿一覧に表示してソート可能にする方法
利用中のテーマの functions.php に次の記述を加えます。
// WordPress Popular Posts のビューカウントを管理画面の投稿一覧に表示する。
function add_posts_column_wpp_views($columns) { $columns['post_wpp_views_num'] = '表示数'; echo '<style type="text/css"> .fixed .column-post_wpp_views_num { width: 120px; } </style>'; return $columns;
}
add_filter( 'manage_posts_columns', 'add_posts_column_wpp_views' );
add_filter( 'manage_edit-post_sortable_columns', 'add_posts_column_wpp_views' );
function add_each_posts_column_wpp_views($column_name, $post_id) { if( 'post_wpp_views_num' == $column_name ) { $post_wpp_views_num = wpp_get_views($post_id, 'monthly', true); echo $post_wpp_views_num; $post_wpp_views_num_old = get_post_meta($post_id,'表示数',true); update_post_meta($post_id,'表示数', $post_wpp_views_num, $post_wpp_views_num_old); }
}
add_action( 'manage_posts_custom_column', 'add_each_posts_column_wpp_views', 10, 2 );
function add_posts_column_orderby_wpp_views( $vars ) { if ( isset( $vars['orderby'] ) && '表示数' == $vars['orderby'] ) { $vars = array_merge( $vars, array( 'meta_key' => '表示数', 'orderby' => 'meta_value_num', )); } return $vars;
}
add_filter( 'request', 'add_posts_column_orderby_wpp_views' );
▲ こんな感じでアクセス数が表示されます。
ご注意
このカスタマイズをすると「表示数」というカスタムフィールドが作成されます。
また、初回は投稿一覧画面ですべての記事を表示させてください。
※一度表示しないとカスタムフィールドが作成できないため。
WP-PostViews でも試してみたけど。。。
実は、アクセス数を管理画面に表示できる WP-PostViews というプラグインで管理画面の投稿一覧に表示数を表示させたんだけど、表示数でソートすると閲覧数ゼロの記事が表示されなくて諦めました。
まさにこんな機能が欲しかった!!というのを実現できるコード、感動モノでした。ありがとうございます。
1つ質問なのですが、通常(デフォルト)の投稿一覧では表示順に並び替えができますが、環境の問題なのか、カスタム投稿タイプでは「表示数」は表示されるものの並び替えができません。
コードのカスタマイズ方法、その他適用できるようなやり方があれば教えていただけませんか??
よろしくお願い致します。
コメントありがとうございます!
実はカスタム投稿タイプをまだ使ったことがありません。(^_^;)
お力になれず申し訳ありません。
今後、カスタム投稿タイプを利用する事がありましたら、記事に追記いたします。