【至急・重要】ウィルスチェックのお願い

Change Style


WP: Google リーダーからブログロール(リンク)へのインポート・表示

WP 情報専門フィード の 「WPer」 に収録してあるフィードの一覧を表示しようと思い立ち、WordPress の「ブログロール(リンク)機能」を試してみることにした。まとめフィードは Google リーダーを利用しているので、登録フィードの一覧から Add Link 画面へ一つずつコピペして登録。

…Σ(゜д゜lll)
インポート機能があったじゃん!

そう、WordPress のブログロール機能は、OPML 形式のファイルからデータを取り込むことができるのでした。。1

ということで、以下は、Google リーダーから WordPress の Blogroll へインポートし、サイトに表示させるまでのメモ。インポート後に WP の編集画面上でちまちま修正することにないように、できるだけ OPML ファイル上でデータを整えた上でのインポートを目論む。

使用バージョン: WordPress 2.3.1

1件テスト

まずは 1件テスト。Google リーダーから登録フィードをエクスポートし、テスト用に1件に絞ってから、WP へインポートしてみた。
Google リーダーからエクスポートしたデータそのままだと、どう登録されるか?OPML のフォーマットが全く分かっていないので、それを知るのも兼ねて。

1. Google リーダ > 設定 > インポート/エクスポート 画面

登録フィードのエクスポート
OPML ファイル形式で登録フィードをエクスポートする
をクリックして、ファイルとして保存。

タグなどでの絞込みはできず、全件出力される。

2. OPML ファイルをテキストエディタで開く

テキストエディタで開く(自動的に UTF-8/LF)と、次のようなフォーマットになっている。

OPML の構成:
  • <opml version="1.0">
    • <head>~</head>
    • <body>
      • outline タグA
        • outline 登録フィード
        • outline 登録フィード
        • outline
      • outline タグB
        • outline 登録フィード
        • outline 登録フィード
        • outline
      • outline 登録フィード (未タグ付け)
      • outline 登録フィード (未タグ付け)
      • outline
    • </body>
  • </opml>
コード:
<opml version="1.0">
    <head>
        <title>ぼの の Google リーダー登録フィード</title>
    </head>
    <body>
        <outline title="タグ名" text="タグ名">
            <outline text="登録フィード名" title="登録フィード名" type="rss"
                xmlUrl="フィード URL" htmlUrl="サイト URL"/>
            <outline text="登録フィード名" title="登録フィード名" type="rss"
                xmlUrl="フィード URL" htmlUrl="サイト URL"/>
        </outline>
        <outline text="登録フィード名"
            title="登録フィード名" type="rss"
            xmlUrl="フィード URL" htmlUrl="http://codex.wordpress.org/Special:Recentchanges"/>
        <outline text="insomniaque" title="insomniaque" type="rss"
            xmlUrl="http://bleu.raindrop.jp/feed/" htmlUrl="http://bleu.raindrop.jp"/>
        <outline text="ja.wordpress.org 日本 ATOM"
            title="ja.wordpress.org 日本 ATOM" type="rss"
            xmlUrl="http://ja.wordpress.org/feed/atom/" htmlUrl="http://ja.wordpress.org/"/>
    </body>
</opml>
  • タグ名: 付けているタグ名。大文字混在もそのまま。
  • 登録フィード名: そのまま。自分で名前を書き換えていればそれで。
  • フィード URL: そのまま
  • サイトURL:
    • だいたいサイトのトップになるが、最後の /(スラッシュ)が欠けることがほとんど。
    • WP サイトがサブディレクトリになっている場合も OK。
    • 必ずトップという訳ではなく、こんなのもある。判定ロジックは謎。。http://codex.wordpress.org/Special:Recentchanges
    • URL 中の & は、文字実体参照になっている
  • type="rss" — ATOM でもこれ。
3. 1件に絞って別名で保存
<opml version="1.0">
    <head>
        <title>ぼの の Google リーダー登録フィード</title>
    </head>
    <body>
        <outline title="wper" text="wper">
            <outline text="Embrion.tv » WordPress"
                title="Embrion.tv » WordPress" type="rss"
                xmlUrl="http://embrion.tv/category/wordpress/feed/" htmlUrl="http://embrion.tv"/>
        </outline>
    </body>
</opml>

<outline title="wper" text="wper"> </outline> は試しに残してみる。

次がたまたま Embrion.tv さんだったので、事例として挙がってしまいました。すみません~。(^-^;) >いつきさん

4. WordPress へインポート

カテゴリは WPer を選択(1つしかないけど。。)

Importing...

Inserted wper Inserted Embrion.tv » WordPress

Inserted 2 links into category 52. All done! Go manage those links.

2件って出た!でも、登録されたデータは 1件だった。↓

5. 登録されたデータを確認
  • Name: Embrion.tv » WordPress
  • Address: http://embrion.tv
  • RSS Address: http://embrion.tv/category/wordpress/feed/
  • Categories: WPer
  • その他の項目はデフォルト値

「wper」の方は、リンクとして登録されたわけでもなく、カテゴリが増えちゃったわけでもないので、見なかったことにする。。

検討

Address 欄
手作業で登録していたときは、登録フィードの元に当たる WP カテゴリ/タグページの URL を入れていた。そのように直すか、今までの含めてサイトトップの URL に変更するか?
→ 手作業どおりにする。
Description 欄
ここに WPer のお名前を入れていた。 何かの属性でインポートしてくれるか、WP のソースを調べる。

wp-admin/link-import.php に読み込まれている link-parse-opml.php に次のコードあり。

// columns we wish to find are:  link_url, link_name, link_target, link_description
// we need to map XML attribute names to our columns
$opml_map = array('URL'         => 'link_url',
    'HTMLURL'     => 'link_url',
    'TEXT'        => 'link_name',
    'TITLE'       => 'link_name',
    'TARGET'      => 'link_target',
    'DESCRIPTION' => 'link_description',
    'XMLURL'      => 'link_rss'
);

先の OPML ファイルとも見比べてみると、左辺の属性名が OPML にあれば、右辺のカラム(フィールド)に入れてくれそう。属性名の大文字小文字は関係ないようだ。

ということで、OPML ファイルに description="お名前" というように属性を追加してみた。
htmlUrl もカテゴリページの URL に修正しておいてみる。

<opml version="1.0">
    <head>
        <title>ぼの の Google リーダー登録フィード</title>
    </head>
    <body>
        <outline title="wper" text="wper">
            <outline text="Eriane ver 0.6.1" title="Eriane ver 0.6.1"
                type="rss" description="かみらさん"
                xmlUrl="http://nakoruru.jp/index.php?cat=4&amp;feed=rss" htmlUrl="http://nakoruru.jp/index.php?cat=4"/>
    </body>
</opml>
  • Name: Eriane ver 0.6.1
  • Address: http://nakoruru.jp/index.php?cat=4
  • Description: かみらさん
  • RSS Address: http://nakoruru.jp/index.php?cat=4&feed=rss
  • Categories: WPer
  • その他の項目はデフォルト値

希望通りにインポートされた。ヽ(・∀・)人(・∀・)ノ
&amp;& に直って登録され、問題なし。

次がたまたま Eriane さんだったので、事例として挙がってしまいました。すみません~。(^-^;) >かみらさん

本番インポート

次以降のデータのフォーマットを次の形に整えて、インポート。

<opml version="1.0">
    <head>
        <title>ぼの の Google リーダー登録フィード</title>
    </head>
    <body>
        <outline title="wper" text="wper">
            <outline text="サイト名"
                type="rss" description="お名前"
                xmlUrl="フィード URL" htmlUrl="カテゴリ・タグページ URL"/>
            <outline 次... />
        </outline>
    </body>
</opml>
  • text 属性と title 属性は、どちらも link_name(Name 欄)になるので、片方だけあればいい(テスト済み)。
  • カテゴリは、別途インポート画面で指定するので、<outline title="wper" text="wper"> </outline> はなくていいはずだが、メモとして残しておく。(本当は外したほうが無難)

→ 一応でけた。ヽ(・∀・)人(・∀・)ノ

記事への表示

ブログロールをサイト上に表示するには、リンク管理タグ唯一の生き残り wp_list_bookmarks() を使う。デフォルトではサイドバー向けフォーマットで出力されるので、「まとめフィード」の記事内に表示するために、次のようなコードとした。runPHP も使用。

<ul class="linklist">
<?php wp_list_bookmarks('category=52&categorize=0&title_li=&show_description=1&between= - '); ?>
</ul>

完成: WP: WordPress 情報専門フィード - WPer 収録フィード一覧

関連リンク

  1. インポート機能はあるのにエクスポート機能がないのが気になって、今まで使用を避けていたのだった。忘れてた。orz[back]

コメントをどうぞ