[WordPress] プラグインなしで全投稿の URL とタイトルを取得する

これまで WordPress の全投稿の URL とタイトルを取得するために、Export All URLs というプラグインを使っていた。

Export All URLs – WordPress plugin | WordPress.org
https://wordpress.org/plugins/export-all-urls/

しかし、余計なプラグインは削除したい(最近 WordPress の読み込みが遅くなってきたし)。ということで、Export All URLs プラグインは削除し、プラグインを使わない方法で全投稿の URL とタイトルを取得してみることにした。

といっても簡単で以下の PHP スクリプト(export.php とでも名前を付ける)を WordPress のルートディレクトリに配置し、ブラウザでそのファイルにアクセスすればいい。

 1<?php
 2
 3include "wp-load.php";
 4
 5$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
 6$posts = $posts->posts;
 7
 8header('Content-type:text/plain');
 9foreach($posts as $post) {
10    switch ($post->post_type) {
11        case 'revision':
12        case 'nav_menu_item':
13            break;
14        case 'page':
15            $permalink = get_page_link($post->ID);
16            break;
17        case 'post':
18            $permalink = get_permalink($post->ID);
19            break;
20        case 'attachment':
21            $permalink = get_attachment_link($post->ID);
22            break;
23        default:
24            $permalink = get_post_permalink($post->ID);
25            break;
26    }
27    echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}";
28}
29?>

タブ区切りで投稿タイプ(post か page か)、URL、ページタイトルが取得できるのでそれをコピペして利用すればいい。

利用後は念のためサーバーから削除しておくとよい。

参考:
How to Get a List of All WordPress Post URLs
https://www.bloggersignal.com/list-wordpress-urls/