「WordPressで投稿記事のURLを一括取得する方法【WP_Query・SQL・REST API】

「WordPressで投稿記事のURLを一括取得する方法【WP_Query・SQL・REST API】

WordPressで投稿記事のURLをまとめて取得する方法はいくつかあります。以下の方法を試してみてください。


1. WordPressのWP_Queryを使う(テーマやプラグイン開発向け)

functions.php やカスタムテンプレートで以下のコードを使用すると、すべての投稿URLを取得できます。

phpコピーする編集するfunction get_all_post_urls() {
    $args = array(
        'post_type'      => 'post',
        'posts_per_page' => -1, // すべての投稿を取得
    );

    $query = new WP_Query($args);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            echo get_permalink() . "<br>";
        }
        wp_reset_postdata();
    }
}

get_all_post_urls(); を適切なテンプレートファイル(例: page.php)などで呼び出せば、すべての投稿URLを取得できます。


2. SQLを使って直接データベースから取得

WordPressのデータベースから投稿URLを直接取得する場合、以下のSQLを実行できます。

sqlコピーする編集するSELECT guid FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish';

PHPで実行する場合:

phpコピーする編集するglobal $wpdb;
$results = $wpdb->get_results("SELECT guid FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish'");

foreach ($results as $post) {
    echo $post->guid . "<br>";
}

3. REST APIを使って取得

WordPressのREST APIを使用すると、外部から簡単に投稿のURLを取得できます。

URL例(すべての投稿を取得)

bashコピーする編集するhttps://example.com/wp-json/wp/v2/posts?per_page=100

PHPで取得する場合:

phpコピーする編集する$response = wp_remote_get('https://example.com/wp-json/wp/v2/posts?per_page=100');
$body = wp_remote_retrieve_body($response);
$posts = json_decode($body);

foreach ($posts as $post) {
    echo $post->link . "<br>";
}

4. CSVでエクスポートして取得

管理画面の「ツール」→「エクスポート」から投稿データをエクスポートし、URLを取得する方法もあります。


おすすめの方法

  • コードで取得したい場合WP_QueryREST API
  • データベースから直接取得 → SQL(多くの投稿を一括処理したい場合)
  • 手動で取得したい場合 → CSVエクスポート