WordPress サイトの総ページ数を取得する方法

  • ---

    LINEで送る
  • -

    ブックマーク
  • -

    pocket
  • -

    rss
wordpress image
イラストACの画像をもとに加工しています。

WordPressの『サイトの』総ページ数を取得する方法が意外と見つからないので考えました。

ページネーションで使う総ページ数とはちがいます。

アクセス解析ツールは総ページ数を知らない

サイトのアクセス解析をするとき、全体のページ総数は

アクセスがあったページの総数

がふつうです。アクセス解析を自作する人は少ないでしょう。Google Analyticsなどの外部ツールを使うはずです。

これらのツールは、サイトのすべてのページを知っているわけではなく

1回でもアクセスがあったら保存する

という仕組みなので、まったく0アクセスのページのことは知りません。

ツールでは、ページのアクセスが0になることがありますが、『対象期間が0』であって、そのページは解析をはじめてから最低1アクセスあるページです。

サイトの総ページ数の計算

そうなると、『サイトのページ総数に対して〇〇』という解析がむずかしくなります。ボクもこれがしたくて探しました。

サイトの1ページあたりのPV

アクセスのあるページの割合

(逆にアクセスのない割合)

etc...

WordPressでは、カテゴリやタグの一覧ページなどの、ページネーションで使う総ページ数を取得する方法はすぐ見つかりますが、サイトの総ページ数についてはあまり見かけません。

ということで自分で作ることにしました。サイトの総ページ数は次のように計算します。

投稿ページ数

+

固定ページ数

+

アーカイブページ数

+

ホーム

サンプルコード

いきなりサンプルコードからです。

function my_get_all_page_count() {
    $post = wp_count_posts()->publish;
    $page = wp_count_posts('page')->publish;
    $lp = wp_count_posts('lp')->publish;

    // +1: ホームとアーカイブページ
    return $post + $page + $lp + 1;
}

公開済みのページだけをカウントするために、'->publish'を使います。

ホームとアーカイブページは、WordPress公式のアクセス数カウント(Jetpackプラグインを使う)で、'Home page / Archives'にまとめまれて数えるので+1にしました。

アーカイブページは、カテゴリやタグの一覧ページなど、archive.phpがらみのページです。

4行目の'lp'はカスタム投稿タイプです。

カスタム投稿タイプの登録
#args = [
    'labels'        => [
        'name'                => 'LP',
        'singular_name'       => 'LP',
        'add_new_item'        => '新しいLPを追加',
        'add_new'             => '新規追加',
        'new_item'            => '新しいLP',
        'view_item'           => 'LPを表示',
        'not_found'           => 'LPはありません',
        'not_found_in_trash'  => 'ゴミ箱にLPはありません。',
        'search_items'        => 'LPを検索',
    ],
    'public'        => true,
    'show_ui'       => true,
    'query_var'     => true,
    'hierarchical'  => false,
    'menu_position' => 5,
    'has_archive'   => false,
    'show_in_rest'  => true,
    'supports'      => [
        'title',
        'editor',
        'thumbnail',
        'page-attributes'
    ]
];
register_post_type( 'lp', $args );

カスタム投稿タイプを作るregister_post_type()の第1パラメータの値か、URLでも確認できます。

https://sample.com/lp/posts-xxxxxxx/

カスタム投稿タイプの数だけ足していけばいいでしょう。

ホームとアーカイブページを細かく分けるには?

Google Analyticsなど外部ツールを使うとき、ホームとアーカイブページのカウントは別々です。細かく分けたいこともあるでしょう。

そこで、ホームとアーカイブページのページ数を出すには、カテゴリ・タグの数を出します。アーカイブページ数は、カテゴリ・タグの数と同じなので。

カテゴリ数

+

タグ数

+

カスタム・タクソノミー数

function my_get_all_taxonomy_count() {
    $category = wp_count_terms('category');
    $tag = wp_count_terms('post_tag');
    $custom = wp_count_terms('category_sample');
    return $category + $tag + $custom;
}
'category'デフォルトのカテゴリ数
'post_tag'デフォルトのタグ数

'category_sample'のように、自分で作ったカテゴリやタグなどのカスタム・タクソノミーも足しましょう。

wp_count_terms()で指定するものは、カスタム・タクソノミーを作るregister_taxonomy()の第1パラメータの値かURLで確認できます。

カスタム・タクソノミーの登録
$args = [
    "label" => "サンプルカテゴリー",
    "labels" => [
        "name" => "サンプルカテゴリー",
        "singular_name" => "サンプルカテゴリー",
    ],
    "public" => true,
    "publicly_queryable" => true,
    "hierarchical" => true,
    "show_ui" => true,
    "show_in_menu" => true,
    "show_in_nav_menus" => true,
    "query_var" => true,
    "rewrite" => [ 'slug' => 'category_sample', 'with_front' => true, ],
        "show_admin_column" => true,
        "show_in_rest" => true,
        "rest_base" => "category_sample",
        "rest_controller_class" => "WP_REST_Terms_Controller",
        "show_in_quick_edit" => false,
];
register_taxonomy( "category_sample", [ "post" ], $args );

https://sample.com/category_sample/taxonomy-xxxxxxx/

作成したカスタム・タクソノミーの数だけwp_count_terms()で取得すればいいです。

最終的なサンプルコードです。

function my_get_all_taxonomy_count() {
    $category = wp_count_terms('category');
    $tag = wp_count_terms('post_tag');
    $custom = wp_count_terms('category_sample');
    return $category + $tag + $custom;
}
function my_get_all_page_count() {
    $post = wp_count_posts()->publish;
    $page = wp_count_posts('page')->publish;
    $lp = wp_count_posts('lp')->publish;
    $taxonomy = my_get_all_taxonomy_count();

    // +1: ホーム
    return $post + $page + $lp + $taxonomy + 1;
}

サイトのページ総数が取れました。

Not Found(404)ページは外しています。あまり意味ないので。

ユーザーのページも足す

ユーザーのページもあるならそれも足しましょう。説明は省略してサンプルコードだけご紹介します。


function my_get_all_taxonomy_count() {
    $category = wp_count_terms('category');
    $tag = wp_count_terms('post_tag');
    $custom = wp_count_terms('category_sample');
    return $category + $tag + $custom;
}
function my_get_user_count() {
    $args = [
        'blog_id'      => $GLOBALS['blog_id'],
        'role'         => '',
        'meta_key'     => '',
        'meta_value'   => '',
        'meta_compare' => '',
        'meta_query'   => [],
        'date_query'   => [],
        'include'      => [],
        'exclude'      => [],
        'orderby'      => 'login',
        'order'        => 'ASC',
        'offset'       => '',
        'search'       => '',
        'number'       => '',
        'count_total'  => false,
        'fields'       => 'all',
        'who'          => ''
    ];
    return array_sum( get_users( $args ) );
}
function my_get_all_page_count() {
    $post = wp_count_posts()->publish;
    $page = wp_count_posts('page')->publish;
    $lp = wp_count_posts('lp')->publish;
    $taxonomy = my_get_all_taxonomy_count();
    $user = my_get_user_count();

    // +1: ホーム
    return $post + $page + $lp + $taxonomy + $user + 1;
}

WordPressの本
post-cta-image

たくさんあるなかで、WordPressの基本が学べる、目的別に学べる本を選びました。

  • WordPressの基本
  • Webサイト作成から運用まで全体的に学ぶ
  • ブログサイトの運営からサイトの収益化を学ぶ
  • サイト作成・運営 + 集客の方法を学ぶ
  • WordPressからPHPプログラミングを学ぶ
  • 最新のWordPress(バージョン5)に対応した本

の7冊です。どうしてもネット上で調べて勉強するのが苦手という人におすすめです。

この内容をモノにすればほかの本は必要ありません。あとは自分の力で、書籍を使わずにインターネット上にある情報だけで学んでいけます。


WordPressの本7選

SNSでも記事を配信しています。
コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

top
この記事を気に入ったらぜひシェアも!!