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_Query
やREST API
- データベースから直接取得 → SQL(多くの投稿を一括処理したい場合)
- 手動で取得したい場合 → CSVエクスポート