WordPressで各記事のview数を管理画面の記事一覧に表示してソート可能にする方法

スポンサーリンク
スポンサーリンク

WordPressで人気のプラグインの一つに「WordPress Popular Posts」があります。これを使うと各ページの表示回数がわかったり、サイトを閲覧してくれる人向けにサイドバーなどにウ人気記事ウィジットを配置させたりと便利な機能が満載です。

今回はこの「WordPress Popular Posts」を使って管理画面の「投稿一覧」や「固定ページ一覧」に閲覧数を表示させ、かつ、多い順や少ない順に並び替えるソート機能を実装してみました。

「WordPress Popular Posts」を使って管理画面の「投稿一覧」に閲覧数を表示させ、多い順や少ない順に並び替えるソート機能を実装する

「WordPress Popular Posts」をインストールすると「設定」ー「WordPress Popular Posts」ー「統計」で過去24時間、過去7日間、過去30日間そして「WordPress Popular Posts」で計測を始めてから今までのすべての期間についてのView数を確認することができます。

※昨日インストールしたばかりなので全然view数がありませんが・・・

スポンサーリンク

この画面を見れば、サイトのベストテンを把握できるのでいいのですが、見慣れた投稿一覧や固定ページ一覧にもview数が表示できないものかといろいろぐぐってみたら、すでに実装されている方がいらっしゃいました。

WordPress Popular Posts で記事の表示数を管理画面の投稿一覧に表示してソート可能にする
WordPress のプラグイン で記事の表示数を管理画面の投稿一覧に表示してソート可能にする方法です。 記事の表示数を管理画面の投稿一覧に表示してソート可能にする ...

こちらのサイト様に掲載されていたソースをそのまま適応して、投稿一覧にview数を表示することが出来ました。

// 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' );

ついでに固定ページ一覧でも同様に記事一覧の表示と並び替えソート機能を実装してみた

スポンサーリンク

関数を少しだけ変えて(といってもpostをpageにしたくらい)固定ページ一覧でも同じのような機能を実装してみました。

その関数がこちら。

// 固定ページにも出してみた
function add_pages_column_wpp_views($columns) {
    $columns['page_wpp_views_num'] = '表示数';
    echo '<style type="text/css"> .fixed .column-page_wpp_views_num { width: 120px; } </style>';
    return $columns;
}
add_filter( 'manage_pages_columns', 'add_pages_column_wpp_views' );
add_filter( 'manage_edit-page_sortable_columns', 'add_pages_column_wpp_views' );

function add_each_pages_column_wpp_views($column_name, $page_id) {
    if( 'page_wpp_views_num' == $column_name ) {
        $page_wpp_views_num = wpp_get_views($page_id, 'monthly', true);
        echo $page_wpp_views_num;
        $page_wpp_views_num_old = get_post_meta($page_id,'表示数',true);
        update_post_meta($page_id,'表示数', $page_wpp_views_num, $page_wpp_views_num_old);
    }
}
add_action( 'manage_pages_custom_column', 'add_each_pages_column_wpp_views', 10, 2 );

function add_pages_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_pages_column_orderby_wpp_views' );

これで記事一覧からview数が確認でき、なおかつ並べ替えも出来るようになりました!!

教えていただきましてありがとうございます!!

関数はどこに書けばいいの?

WordPressの場合、自作の関数などはテーマの中にあるfunction.phpに書きます。ただ、テーマがアップデートされるとfunction.phpが上書きされることが多いので、追記した分が消えてしまいます。それを避けるため、「子テーマ」というのを用意して「子テーマ」内のfunction.phpに書くと上書きされません。

子テーマの作り方については別記事でご紹介したいと思います。

 

コメント

タイトルとURLをコピーしました