WordPressブログで記事が増えてきたら、人気記事ランキングを作ると回遊がかなり改善します。ただし、単純なPVランキングだけだと、検索流入で伸びている記事や、クリックされている記事の価値を見落とすことがあります。
この記事では、GA4のPVとSearch Consoleのクリック・表示回数を使って、WordPressブログに人気記事ランキングを作る考え方をまとめます。
SEOタイトル
WordPressブログで人気記事ランキングを作る方法【GA4・Search Console活用】
meta description
WordPressブログで人気記事ランキングを作る方法を解説。GA4のPV、Search Consoleのクリック数・表示回数を保存し、REST APIやテンプレートで表示する流れを紹介します。
人気記事ランキングに使うデータ
| データ | 分かること | 向いている使い方 |
|---|---|---|
| GA4のPV | 実際に読まれた量 | サイト内の人気記事を出す |
| Search Consoleのクリック数 | 検索から選ばれた量 | 検索流入の強い記事を出す |
| Search Consoleの表示回数 | 検索結果に出た量 | 伸びそうな記事を見つける |
| CTR | 表示に対してクリックされた割合 | タイトル改善候補を探す |
まずはDBへ保存する
ランキングは表示のたびにGA4やSearch Console APIを叩くより、1日1回DBへ保存しておく方が扱いやすいです。API制限、表示速度、キャッシュを考えると、日次保存がおすすめです。
CREATE TABLE wp_nines_popular_pages (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
measured_at DATE NOT NULL,
page_path VARCHAR(255) NOT NULL,
page_title VARCHAR(255) NOT NULL DEFAULT '',
pageviews INT UNSIGNED NOT NULL DEFAULT 0,
clicks INT UNSIGNED NOT NULL DEFAULT 0,
impressions INT UNSIGNED NOT NULL DEFAULT 0,
ctr DECIMAL(8,4) DEFAULT NULL,
avg_position DECIMAL(8,2) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY page_date (measured_at, page_path)
);REST APIでランキングを返す
フロント側やテンプレートから使いやすいように、ランキング用のREST APIを作ります。公開ランキングなら誰でも見られるAPIで構いませんが、管理者向けの詳細データを出す場合は権限チェックを入れます。
add_action('rest_api_init', function (): void {
register_rest_route('nines/v1', '/popular-posts', [
'methods' => 'GET',
'callback' => 'nines_get_popular_posts',
'permission_callback' => '__return_true',
]);
});
function nines_get_popular_posts(WP_REST_Request $request): WP_REST_Response
{
global $wpdb;
$table = $wpdb->prefix . 'nines_popular_pages';
$rows = $wpdb->get_results(
"SELECT page_path, page_title, pageviews, clicks, impressions
FROM {$table}
WHERE measured_at >= DATE_SUB(CURDATE(), INTERVAL 28 DAY)
ORDER BY pageviews DESC, clicks DESC
LIMIT 10",
ARRAY_A
);
return rest_ensure_response($rows ?: []);
}テンプレートに表示する
<?php
$response = wp_remote_get(home_url('/wp-json/nines/v1/popular-posts'));
$popular_posts = [];
if (!is_wp_error($response)) {
$popular_posts = json_decode(wp_remote_retrieve_body($response), true);
}
?>
<?php if ($popular_posts) : ?>
<section class="popular-posts" aria-labelledby="popular-posts-title">
<h2 id="popular-posts-title">よく読まれている記事</h2>
<ol>
<?php foreach ($popular_posts as $post) : ?>
<li>
<a href="<?php echo esc_url(home_url($post['page_path'])); ?>">
<?php echo esc_html($post['page_title']); ?>
</a>
</li>
<?php endforeach; ?>
</ol>
</section>
<?php endif; ?>ランキングの見せ方
- トップページには直近28日の人気記事を出す
- 記事下には同カテゴリの人気記事を出す
- 検索流入が強い記事はハブ記事へリンクする
- PVだけでなくクリック数も見て検索に強い記事を拾う
- 古い記事が上位に残る場合はリライト候補にする
内部リンク案
- WordPressでGoogle Analytics Data APIをCronで毎日自動取得する方法
- WordPressでSearch Console APIを使って検索順位を取得する方法
- WordPressでGoogle AnalyticsとSearch ConsoleのデータをAIで分析するダッシュボードを作ってみた
まとめ
人気記事ランキングは、読まれている記事を見せるだけではなく、サイト全体の回遊を作るための導線です。GA4で読まれている記事を見つけ、Search Consoleで検索から選ばれている記事を見つけ、WordPress側でランキングとして出す。この流れを作ると、アクセス解析を実際の改善に使いやすくなります。