[WordPress] 一括で全ての投稿記事のパーマリンクを取得する方法

この記事で言えば https://b.0218.jp/20160111194940.html のようなURLで取得する。

使用シーン

Google Analytics などと付き合わせを行う際に記事のURLが必要である場合… など。

取得方法

XML ファイルをエクスポート

get_permalink()で取得できるが、管理画面から一発で取得したい。

ツール > エクスポートから「エクスポートファイルをダウンロード」でXMLをダウンロードする。

処理

以下のようなXMLが出力される。

<item>
    <title>[Windows] PHPMDを導入してAtomで使用する方法</title>
    <link>https://b.0218.jp/20160107193425.html</link>
    <pubDate>Thu, 07 Jan 2016 10:34:25 +0000</pubDate>
    <dc:creator><![CDATA[hiro]]></dc:creator>
    <guid isPermaLink="false">https://b.0218.jp/?p=2354</guid>
    <description></description>
    <content:encoded><![CDATA[]]></content:encoded>
    <excerpt:encoded><![CDATA[]]></excerpt:encoded>
    <wp:post_id>2354</wp:post_id>
    <wp:post_date><![CDATA[2016-01-07 19:34:25]]></wp:post_date>
    <wp:post_date_gmt><![CDATA[2016-01-07 10:34:25]]></wp:post_date_gmt>
</item>

<item>内に投稿の情報がある。その子要素に<link>という項目がある。このタグ内に期待のURLが含まれている。

正規表現を使う

<link>タグ内にURLが記載されているので、その行のみを取得する。

<link>が含まれない行を選択する正規表現は以下。

^(?!.*<link>).+$

これに合致しない行を全て削除すればURLが含まれた行のみを抽出できる。