ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

WordPress, サイト全体の総ページ数(アーカイブページ数も含む)を取得する方法

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/

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

WordPress.org Codex 日本版

wp_count_posts

register_post_type

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

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 AMP『必須の構造化データ要素のエラー』を直す
WordPress, 他とはちがう独自の日時。一瞬戸惑ってしまう。
次の投稿

WordPressの本

post-cta-image

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

  • WordPressの基本。
  • Webサイト作成から運用まで全体的に学ぶ。
  • かんたんなカスタマイズを学ぶ。
  • 何も分からないところから学ぶ。
  • WordPressからPHPプログラミングを学ぶ。

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

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

コメントを残す

*