WordPressエントリ内の<P>タグを無効化

WordPressのエントリ内にjavascriptを埋め込み、document.writeでテキスト表示させたかったのですが、デフォルトのままではエントリの行単位に挿入される<p>タグの影響で、document.writeが動作しませんでした。
そこで、
タグの挿入を無効にするにはどうすればいいのかをネットで調べていると、下記のサイトにヒントがありました。
iDeasilo

wpautop($pee, $br = 1)
空行で囲まれたテキストを段落とみなしてそれぞれ <p></p> タグで囲んでテキスト全体を返す。

そこで、
“wp-includes/default-filters.php” の 121行目(V2.0.9)や123行目(V2.2)あたりの

add_filter(’the_content’, ‘wpautop’);

をコメントアウトすると、<p></p>タグは挿入されなくなりました。
もしExcerptの<p></p>タグも無効にしたいのであれば、同ファイルの

add_filter(’the_excerpt’, ‘wpautop’);

をコメントアウトすれば良いような気がします。(未検証)

Movable Typeのカテゴリアーカイブにおいて特定のカテゴリを非表示にする

Movable Typeをポータルサイト的に使用していると、カテゴリアーカイブに特定のカテゴリを非表示にさせたいと思い、いろいろ調べていると、

に答えがあった。具体的には、FilterCategoriesというプラグインを使うと実現できます。FilterCategoriesプラグインは、Kevin Shayさんのサイト(Staggernation)からダウンロードできます。
例えば、「About」というカテゴリを除外する場合は「exclude」を使用し、

<MTTopLevelCategories>
<MTFilterCategories exclude="About"> ★追加
<MTSubCatIsFirst><ul classs="module-list"></MTSubCatIsFirst>


<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTFilterCategories> ★追加
</MTTopLevelCategories>

となります。逆に「About」というカテゴリだけを表示する場合は、

<MTFilterCategories include="About">

となります。また、カテゴリを複数ある場合は、

<MTFilterCategories include="About|Music|Programming">

というようにORを意味するパイプ「|」で区切ればOKです。

Moosecandy for Google Adsense

を本屋で立ち読みしていると、エントリ内にGoogle Adsenseを表示するプラグイン、MooseCandyについての記載があった。早速試そうと思っていると、WordPress ME 2には対応してないことが判明。しかし、いろいろググっていると、MooseCandy2なるものが公開されているのを発見。
Moosecandy for WP 2.0+からダウンロードできます。
インストール方法は上記サイトに記載されている通り、
1.moosecandy.phpをpluginsディレクトリにアップロード
2.管理画面からプラグイン → プラグインエディタ でMoosecandyを選択
3.下記を置換
<置換前>

$candy[1] = ‘The Moose is Loose!’;
$candy[4] = ‘Is that REALLY an almond?’;

<置換後>

$candy[1] = <<<EOF
Google Adsenseのコード
EOF;

4.更新をクリック
5.Moosecandyプラグインを有効化
結果は本ブログの最新エントリにあります。
最初、最新10エントリにAdsenseを挿入しようと思いましたが、最新の2つ分にしか挿入されてませんでした。
恐らく、ページ当たりに表示できるAdsenseの上限が定められているように思います。

Google sitemap for WordPress

昨日のMovable Typeに引き続き、本日はWordPressでのGoogle sitemapの作成方法です。すばらしいことに、Wordpressではプラグインが公開されており、日本語化されています。しかもかなり高機能です。hiromasa.zoneでは設定内容について考察が記載されています。
Arne Brachholdさんのサイトから最新版をダウンロードできます(2007/05/04時点では2.7.1が最新)。
READMEに記載されている通り作業すれば、簡単にsitemap.xmlを作成できます。
1.解凍して、サーバのプラグインディレクトリにアップロード
2.トップディレクトリにsitemap.xmlとsitemap.xml.gzを作成し、パーミッションを書き込み可能に変更(606など)
3.プラグインを有効化
4.管理画面のオプション → Sitemapで再構築ボタンをクリック
5.Google sitemapにログインして、sitemap.xmlのURLを登録して、確認ボタンをクリック

Google Sitemap for Movable Type

MTブログのSEO対策としてGoogle Sitemap日本語版を利用すると効果があるらしいと聞いたので、作成方法を調べていたところ、自動生成するためのインデックステンプレートを公開されているサイトがありました。
ホームページ制作トータルウェブ
早速これを利用して、sitemap.xmlを作成し、Googleに登録しました。
#TOTAL WEB様、ありがとうございます。とても簡単にできました。
SEO対策としてどれほどの効果が出るのかが楽しみです。

MT(Movable Type)の人気記事ランキングの表示

人気記事のランキングを表示するためのMT用プラグインがT-MostVisited Pluginとして公開されているのだが、記事ファイル名に記事IDを含んでいる必要があるらしく、私のサイトでは利用できなかった。そこで、Open MagicVox.netさんのサイトで記事IDを含まない記事ファイル名でもランキング表示できるスクリプトを公開されていたので、利用させていただきました。
#ぴろりさん、素敵なスクリプトをありがとうございます。
結果は、
My Video Cafe
の右カラムに表示されている通りなのですが、私のサイトでは、カテゴリ単位でランキングを分けたいという要望がありましたので、表示のカスタマイズ以外にも少々改造しました。
スクリプト(hottopic200.php.tmpl)のGetEntryList()で既存の記事エントリのリストを作成しており、その

<MTEntries lastn="999999">

という箇所を、

<MTEntries category="foo OR hoge OR bar" lastn="999999">

<MTEntrieswithsubcategories category="hogehoge" lastn="999999">

に変更することで、fooとhogeとbarというカテゴリに属するエントリのリストや、hogehogeというカテゴリのサブカテゴリ全部のリストを作成します。(サブカテゴリを利用する場合は終了タグの変更も必要です)
次に、MergeCount2EntryList()で上記で作成したエントリリスト内をアクセスログから取得したエントリのURLで検索しているのですが、対象外のカテゴリのエントリURLならば、エントリリストのArrayから見つけられない場合が発生するため、新たにフラグを設定し、エントリが見つからなかった場合は、

$flag = false;
foreach ($entry_list as $index => $value) {
if (is_string (stristr ($value[’EntryPermalink’], $url))) {
// 中略
$flag = true;
}
}
if (!$flag) {
$nTopEntry++;
if ($cur_score != $score) {
$ranking–;
}
}

$nTopEntryと$rankingを元の値に戻し、次のURLに処理を移します。(やっつけすぎ?)
厳密に言えば、ランキングの同値順位の処理が正しくないのだが、重要性が低いと判断し、私は良しとしました。
具体的には、1位、2位、2位の次は、4位なのですが、デフォルトのスクリプトでは3位になります。
同様に、新たにフラグを設定し、外側のforeach文のreturnの直前に、
if ($same) […]

ローカル環境の構築

WordPressのカスタマイズを試すために、自宅のAT互換機(Cent OS 4.4)にWordPressをインストールしたところ、
Fatal error: Call to undefined function: mb_language() in /var/www/html/blog/wp-config.php on line 2
というエラーが発生し、画面が真っ白に。原因をネットで調べていると、php-mbstringというパッケージがインストールされていないというなんとも初歩的なミスを。
# yum install php-mbstring
# /etc/rc.d/init.d/httpd restart
で、WordPressのインストール画面が無事表示されました。

ブログエントリに関連するブログを表示

ブログのエントリを作成した時のキーワードを拾って、そのキーワードを含む他のブログの一覧を自身のブログのメインページに表示する方法を考えました。
1.自身のブログのRDFを受信・解析する
2.特定のXMLタグからキーワードを拾い(例えばkeywordやtags)、そのキーワードによりTechnorati APIで検索する
3.返答された結果を整形して、ブログにscriptとして埋め込む
試した結果がこれです。右カラムの関連ブログに表示されているのが、Technoratiから返された結果です。ここでは「たらこキューピー」がキーワードとして自動で拾っています。

WordPressの日本語化

WordPress ME 2.0.9を使用し、Internal EncodingがUTF-8の場合、wp-config.phpを下記の通りに設定変更
3行目:mb_internal_encoding(”UTF-8″);
18行目:define (’WPLANG’, ‘ja_UTF’);
ググってもなかなか方法が見つからなかったので、早速メモしておきます。