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

  • URLをコピーしました!

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

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

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

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

目次

post_views_countが多い

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

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

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

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

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

SANGOもpost_views_countです。

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

このブログはSWELLですが、ct_post_views_byloos です。

閲覧数をリセットする

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をコピーしました!
目次