WordPressで簡易LPOを実現するプラグイン「wp-SearchKeyword」
事前準備としてAmaury BALMER氏作のプラグイン「Simple Tags」を入れておく。
wp-SearchKeywordは、関連エントリ情報はタイトルや本文などをキーワードで検索して抽出するのではなく、エントリにつけられたタグ情報を 利用しています。Simple Tagsは、WordPressのタグ機能を強化するプラグインで、タグの入力支援や一括編集などのほか、関連エントリを自動的に表示する機能がある。
Simple TagsはWordPresssユーザーの間で利用率が高いプラグインですので、すでに導入している方も多いと思いますが、まだ導入されていない場合は、あらかじめインストールし、管理画面で有効にしておいて下さい。
wp-SearchKeyword
http://de-lab.com/work/wordpress-plugin-searchkeyword/
テーマテンプレートの「single.php」(単一記事)を開き、検索結果に応じた関連エントリを自動表示させたい場所に、以下のコードを挿入。
<?php wpSearchKeyword(); ?>
プラグインで生成する部分のデザインの変更は、クラス名(wpSearchKeyword)のスタイルシートを指定。また、wp- SearchKeywordプラグインは引数で簡単なカスタマイズが可能。HTMLのマークアップを変更したいときなどには、先ほどテーマテンプレー トに挿入したコードを以下の書式で書き換えてください。
<?php wpSearchKeyword("header" , "title属性" , "footer"); ?>
- header
-
- リストの直前に出力するコードやテキスト(文字列)
- デフォルト値: <div>
- title属性
-
- 見出し要素のレベル(H1,H2,H3…の数値部分)
- デフォルト値: 3
- footer
-
- リストの直後に出力するコードやテキスト(文字列)
- デフォルト値: </div>
Movable Type用簡易LPOモジュール「SearchKeyword」
事前準備として、タグ機能を拡張するプラグイン「TagSupplementals 0.10」を利用して、関連エントリの表示部分を実装。
次に、新しいテンプレートモジュールを作成。テンプレートモジュールは、管理画面の「デザイン」→「テンプレート」から作成。「テンプレートモ ジュールを作成」を選択し、以下のソースコードをコピー&ペーストしてください。テンプレートモジュールの名前は「SearchKeyword」にして保 存します。
<?php
define("CHARACTERSET","UTF-8");
function keyword($linkurl) {
if (strpos($linkurl,".google.")) {
$str = eregi_replace(".+q=([^&]+).*","\\1",$linkurl);
$str = urldecode($str);
$str = mb_convert_encoding($str,CHARACTERSET,"UTF-8");
} elseif (strpos($linkurl,".goo.")) {
$str = eregi_replace(".+MT=([^&]+).*","\\1",$linkurl);
$str = urldecode($str);
$str = mb_convert_encoding($str,CHARACTERSET,"EUC-JP");
} elseif (strpos($linkurl,".yahoo.")) {
$str = eregi_replace(".+p=([^&]+).*","\\1",$linkurl);
$str = urldecode($str);
$str = mb_convert_encoding($str,CHARACTERSET,"UTF-8");
} elseif (strpos($linkurl,".msn.")) {
$str = eregi_replace(".+q=([^&]+).*","\\1",$linkurl);
$str = urldecode($str);
$str = mb_convert_encoding($str,CHARACTERSET,"UTF-8");
}
$key = mb_convert_kana($str,"s");
return $key ;
}
$key = keyword($_SERVER['HTTP_REFERER']);
if($key != ""){
echo '<h3>', $key, '関連の記事が見つかりました</h3>';
?>
<ul>
<MTRelatedEntries lastn="5" offset="0">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTRelatedEntries>
</ul>
<?php }?>
続いて、同じくテンプレートのメニューにある「アーカイブテンプレート」の中から「ブログ記事」を開きます。関連エントリを表示させたい場所に次のコードを記述すれば、実装完了です。
<$mt:Include module=”SearchKeyword”$>
テンプレートモジュールはPHPを利用していますので、MTが出力するアーカイブページがデフォルトのHTMLになっている場合は、PHPへ変更す る必要 があります。管理画面の「設定」→「公開設定」を開き、アーカイブオプションのファイル拡張子を「php」と書き換える必要がある。