指定の単語に自動でリンク: Text Link Ads

WordPress ではプラグインによってかんたんに機能追加ができます。導入するのもかんたんで、ひろってきたプラグインのファイルを wp-content/plugins ディレクトリに置くだけで認識されて、管理画面から有効・無効を切替えるだけです。拡張性って、すばらしい。

今回、はじめてのプラグインになりますが、Text Link Ads というのをいれてみました。これは、単語と URL を登録しておくと、本文中にあるその単語に自動的にリンクをつけてくれるというものです。記事を書くときに、頻繁に出てくる単語 (うちの場合でいうと Gentoo Linux とか WordPress とか) にいちいちリンクをつけるのはやっぱりめんどうなので、こういうのがあるととっても便利です。リンク貼らなければいいと言われればまあそうなんですけど。

なおこのプラグインの存在は、naviwave の店長さん(?)の記事にて知りました。ありがとうございます。作者の方もありがとうございます。

このプラグイン自体は前述のようにすぐ使えるようになりますが、その前にちょっと下準備が必要です。

まずこのプラグインで使用する、リンクカテゴリーをつくります。たぶん専用のものを用意したほうがわかりやすいと思います。ここでは、「Text Link Ads」という名前のカテゴリーをつくりました。

そしてこのカテゴリーの ID を、プラグインのソースを書き換えて指定してやります。
工エエェェ(´д`)ェェエエ工 という感じもしないでもないですが、ま、それはともかくとして。管理画面で ID がわかるので、

リンクカテゴリーの作成

これをプラグインファイルの以下の部分に記述します。ここでは 3 になっています。

file: wp-text-link-ads.php
function wr_get_text_ads($content, $category = '3')
                                             // ↑ここ

あとはこんな感じに、このリンクカテゴリー配下にリンクを追加していきます。

リンクの作成

「リンク名」が、リンクを設定したいキーワードになります。「簡単な説明」を書いておくと、ポップアップで表示されたりします。もちろん、カテゴリーはさっき作ったものにします。

ところで、このプラグインのソースを見てみると、実はやってることはとても単純でちょっとびっくりしました。リンクが登録されているテーブルを読んで、正規表現でヒットした単語をアンカータグつきの HTML に置換しているだけなんですね。これを、ページを表示する際にフィルタ処理として組み込んでいるようです。
もとの投稿内容は変えずに動的に処理というあたり、これが PHP 流なのか‥なんて感心しましたが、逆によそに引越したりするとリンクがぜんぶ消えちゃうんでしょうね‥。
それにかんたんだからといってあんまりリンクつけすぎるとなんだかくどい感じになるし、なかなかさじ加減がむずかしいです。

あと、ひとつ難点がありました。たとえば 「Gentoo」 と 「Gentoo Linux」 のように、同じ単語を含む複数のリンクを設定しようとすると、うまくいかないようです。生成されたソースを見てみると、アンカータグが二重について入れ子になってしまってました。アンカータグでくくられた部分は変換の対象にしない、なんてふうに正規表現をいじればうまくいくのかなあ、とは思えるのですが‥残念ながらぼくの知識ではそこまでは無理でした。てゆうか正直何やってるのかさっぱり読めません。正規表現てのはちょっと調べたらすぐわかるというようなシロモノではないですな。('A`)

またオリジナル版では、マウスオーバー時に JavaScript できれいなポップアップが表示されるようになってます。でも、こういうことをするのなら、ほかのリンクと統一的にやりたいな、と思い、ソースに手をいれてシンプルなものにしてみました。
‥そのくらいしかできませんが、それでも Hack と呼んでいいでしょうか。。。

いただいたトラックバック

  1. From: さかなのぺんぎん的日記 さん - 2007/8/3 0:53

    過去記事フォローアップ

    これまで書きっぱなしにしちゃってた記事について、今ではもう状況が違うものなどはやっぱりフォローを入れておかないとね、という企画です。
    ほんとはね、100投稿記念に書こう » 全文を見に行く

よろしければコメントをどうぞ...

(お持ちでしたら)