[WordPress] 投稿された全ての記事のURL(パーマリンク)を取得する方法

この記事で言えば「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が含まれた行のみを抽出できる。