wordpress テクニカルメモ①

テクニカルメモってほどのものじゃないですが、
今回集めたwordpressの情報を腐らせるのは勿体ないので記事にしておきます。
記事にしておけば誰かの検索に引っかかって役に立つかもしれないしね!

すべてwordpress2.2の話です。
まずはテスト環境~導入編から。



▼ローカルテスト環境の問題
いろんな使い勝手を考えるとXAMPP一択なのですが、問題は内部のSQLがバージョン5であること。

ほとんどのレンタルサーバーはバージョン4で動いてます。
ここのXAMPPバージョン1.4.16を落とせば
バージョン4が入ってます。
でも私の環境では[phpcli.exe]がウィルスとしてパージされてしまい動作しませんでした(ノД`)

バージョンが違う環境からSQLのDBをインポートすると起こられます。
wordpressで特に5と4の場合、文字コードの指定がパースエラーとなりはじかれます。
エクスポート時に[SQL互換モード]で【MYSQL40】を選択すれば問題なく通ります。
ただここで作ったSQL4のデータをSQL5にインポートするとエラーが出ます。
ローカルのデータをサーバーにインポートできても、サーバーからローカルにデータはインポートできません。
SQLの古いバージョンが使えれば別ですが・・・。



▼移転時の問題
具体的な手段、操作方法はいろんなサイトに載っているので、ここでは手順どおりやった場合の問題点など。

ローカルから全てのDBテーブルをサーバ側にインポートするとエラーが起きます。
具体的にはDBのwp_optionsに管理画面のベースURLが記録されていて、
それをそのままインポートすると管理画面にログインした週間ローカルのテスト環境にリダイレクトしてしまいます。
しかも、このwp_optionsにはベースURのほかにプラグインの各種設定も格納されているので、
初期化したものに置き換えてしまうと折角のテストが無駄になってしまいます。

エクスポートしたデータからアドレスを置換すれば良いわけですが、
どういうわけかそのまま置換するとエラーが出るので、苦肉の策として最初[バックカップA]をとった後、
【各種設定】の【WordPress のアドレス】と【ホームページアドレス】を移転先のアドレスにして[バックカップB]を
とりこれを移転先にインポートします。
無事インポートできたら[バックカップA]でローカルのテスト環境を基に戻しておきます。
これでパスが通るので管理画面にログインできます。
※//2008-01-08追記// 【phpMyAdmin】で直接【wp_options】テーブル内の
【siteurl】と【home】の値を変更しても大丈夫なようです。



▼コンテンツのスクリプティング
画像をオーバーレイ表示するjavascript【Highslide】をwordpressに組み込むプラグインをOdysseygate.comさんが
供給されていますが、このままだといちいち記事にonclickから始まるタグを書かなくてはいけないので煩雑です。
またRSS2.0の配信時、contentのhtmlリンクにonclickと出るのも物騒です。
※//2008-01-08追記// RSS2.0出力時、本分をcontentで引き出しているので結果的にフィルタが
適応された状態(onclickが付加された状態)で出力されてしまう様です。
呼び出し方を変えればフィルタを適応させずに済みそうですが・・・。




なので、このプラグインに記事の画像リンクをHighslide用に変更する部分を加えておきます。
wpj-highslide.phpの最後の方の空行に加筆します。


define("IMAGE_FILETYPE", "(bmp|gif|jpeg|jpg|png)", true);

function highslide_replace($string) {
$pattern = '/(<a(.*?)href="([^"]*.)' . IMAGE_FILETYPE . '" (.*?)><img(.*?)\/>)/ie';
$replacement = 'stripslashes(strstr("\2\5","onclick") ? "\1" :
"<a\2href=\"\3\4\"\5 class=\"highslide\" onclick=\"return hs.expand(this)\" onkeypress=\"return hs.expand(this)\"><img \6 class=\"imageframe\" \/>")';
return preg_replace($pattern, $replacement, $string);
}

add_filter('the_content', 'highslide_replace');



コード自体はwp-lightbox2から持ってきたものです。
一応意味は理解して書き換えたので間違ってはいないはずです。
$nを使った置換なのでちょっと理解に時間がかかりましたが(笑)

ちなみに最後の部分の[add_filter]、これは現状の仕様ではサイドバーには適応できません。
引数の[the_content]とはエントリー部分のことです。
英語のリファレンスをぱっと見たところ、
指定できる引数として用意されていないようでした。
独自に拡張すればできそうですが。

プロフィールの改行文字[/r]が本分では<br>に置換されて、サイドバーでは置換されないのは
[add_filter]で[wpautop]が[the_content]にしか適応されていないからです(当然の動作ですが・・・)。

「wordpress テクニカルメモ①」 に対してコメントはまだないよ

    • コメント募集中!

    コメントをどうぞ

    名前 (任意)

    メールアドレス (任意)

    ホームページ (任意)



    本文 (必須)