【プラグインなし】投稿一覧に閲覧回数を表示するカスタマイズ

目次

投稿一覧に閲覧回数を表示するカスタマイズ

WordPressテーマのManablog Copyを使っていました。

Manablog Copyはプラグインなしで人気記事が表示できます。

カスタマイズしてカテゴリー別の人気記事も表示しています。

プラグインなしで投稿一覧に閲覧回数を表示するカスタマイズはコピペするだけでできます。

説明が必要ない人は、プラグインなしで記事の閲覧数をカウント・初期化するカスタマイズ方法をどうぞ!

カスタムフィールドは、post_views_countが多い

カスタムフィールドで人気記事や閲覧数を表示で検索するとpost_views_countが多いんです。

Manablog Copyの人気記事もpost_views_countです。

検索すればカスタマイズの記事がヒットします。

カスタマイズしてManablog Copyで使う

プラグインなしで記事の閲覧数をカウント・初期化するカスタマイズ方法をカスタマイズしています。

SANGOもpost_views_countです。

SANGOはカスタマイズするのが難しいし必要ないです。

閲覧数をリセットする機能がある!

Manablog CopyとSANGOの人気記事の閲覧数はプラグインのCustom Field Bulk Editorで編集しています。

さらに閲覧数をリセットする機能をつけるともっと便利ですのでカスタマイズしています。


// 閲覧数集計
add_action( 'wp_head', function() {
    global $post;
    if ( 'publish' === get_post_status( $post ) 
        && is_single() && !is_preview() && !is_bot()) {
        // 公開済、記事ページ、プレビューではない、ボットでない場合
        $views = intval( get_post_meta( $post->ID, 'custom_views', true ) );
        update_post_meta( $post->ID, 'custom_views', ( $views + 1 ) );
    }
} );
// 投稿一覧に[閲覧数]列を追加する
add_filter( 'manage_posts_columns', function( $columns ) {
    $columns['views'] = '閲覧数';
    return $columns;
} );
// カスタムフィールドの値(集計した閲覧数)を表示
add_action( 'manage_posts_custom_column', function( $column_name, $post_id ) {
    if ( $column_name == 'views' ) {
        $views = intval( get_post_meta( $post_id, 'custom_views', true ) );
        echo $views;
    }
}, 10, 2 );
// ソート対象の列として追加
add_filter( 'manage_edit-post_sortable_columns', function( $columns ) {
    $columns['views'] = '閲覧数';
    return $columns;
} );
// 数値としてソートするように設定
add_filter( 'request', function( $vars ) {
    if ( isset( $vars['orderby'] ) && '閲覧数' == $vars['orderby'] ) {
        $vars = array_merge( $vars, array(
            'meta_key' => 'custom_views',
            'orderby' => 'meta_value_num'
        ));
    }
    return $vars;
} );
// 一括処理項目追加
add_filter( 'bulk_actions-edit-post', function( $actions ) {
    // 閲覧数クリア項目追加
    $actions += array( 'clear_views' => '閲覧数初期化' );
    return $actions;
} );
// 一括処理部分
add_filter( 'handle_bulk_actions-edit-post', function( $redirect_to, $doaction, $post_ids ) {
    if ( $doaction == 'clear_views' ) {
        foreach ( $post_ids as $post_id ) {
            // チェックされた記事のループ
            update_post_meta( $post_id, 'custom_views', 0 );
        }
    }
    $redirect_to = add_query_arg( 'bulk_views_clear', count( $post_ids ), $redirect_to );
    return $redirect_to;
}, 10, 3 );
// 一括処理結果通知
add_action( 'admin_notices', function () {
    if ( ! empty( $_REQUEST['bulk_views_clear'] ) ) {
        $cleared_count = intval( $_REQUEST['bulk_views_clear'] );
        echo "<div id='message' class='updated fade'>{$cleared_count}件の閲覧数を初期化しました。</div>";
    }
} );



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次