Browse Tag: wordpress

wordpress プラグイン開発方法

まず、仕組みから簡単に説明すると、wordpress(wordpress mu も含む) は所々でフックを設定できるようになっています。例えば、エントリをした直後とか、ページに header タグを出力する直前など、たくさんのところでフックを設定することができます。プラグインは、このフックに登録して何らかの処理を実行するように開発していきます。

フックできる箇所の一覧は、Plugin API/Action ReferenceWordPress Hooksにまとまっています。 また、データベースに接続するときにもフックすることができます。一覧は、WordPress hools database にあります。日本語の解説もありますね。

プラグインは、必ず PHP で次のようなヘッダコメントを入れなければならない。

<?php/*

Plugin Name: Name Of The Plugin

Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates

Description: A brief description of the plugin.

Version: The plugin's Version Number, e.g.: 1.0

Author: Name Of The Plugin Author

Author URI: http://URI_Of_The_Plugin_Author

*/

?>

次に、フックに登録するには、次のようになる。次の例は、管理ページのフッター部分が呼ばれるときのフックに登録する方法です。フッター部分が呼ばれたとき、hoge 関数が呼ばれるという意味です。

add_action(‘admin_footer’, ‘hoge’);

あとは、hoge 関数の中にプラグインでやりたい処理を書いていくわけだが、wordpress にはすでに組み込まれている関数群がある。この関数群の一覧は、Function Reference にまとまっていますので、この関数を使うと便利です。また、wordpress のソースコードを見ると分かりますが、global を使いまくりなので global 変数にアクセスすることもできます。つまり、何でもできるということになります。

例えば、wordpress で今開いているページの URI を知りたいときは、次のようになります。

global $pagenow;

echo $pagenow;

使われている global 変数は資料を探すよりもソースコードを grep した方が早いです。

wp-amazon プラグインが動作しない

WordPress で、かなり使い易い wp-amazon プラグインですが、ECS 3.0 が終了してしまった影響力だとは思いますが検索できなくなっています。

具体的には、Wp-amazon 2.1にあるように修正すれば WordPress 2.5 でもちゃんと動作する。

wp-amazon.php の差分は、次の通りになります。

 

— wp-amazon.php-org   Fri May 16 10:14:14 2008

+++ wp-amazon.php       Fri May 16 12:44:44 2008

@@ -141,7 +141,7 @@

                             <option value=”fr” <?php echo $var[‘fr’]; ?>><?php _e(‘France’, ‘wpamazon’); ?></option>

                             <option value=”co.uk” <?php echo $var[‘co.uk’]; ?>><?php _e(‘Great Britain’, ‘wpamazon’); ?></option>

                             <option value=”de” <?php echo $var[‘de’]; ?>><?php _e(‘Germany’, ‘wpamazon’); ?></option>

–                            <option value=”co.jp” <?php echo $var[‘co.jp’]; ?>><?php _e(‘Japan’, ‘wpamazon’); ?></option>

+                            <option value=”jp” <?php echo $var[‘jp’]; ?>><?php _e(‘Japan’, ‘wpamazon’); ?></option>

                             <option value=”com” <?php echo $var[‘com’]; ?>><?php _e(‘United States’, ‘wpamazon’); ?></option>

                         </select>

 本家にも報告していこうと思って、Wp Aamzon の Google Group を見てみたら、すでに同じ問題が報告されていました。すばらしいと思って、僕も返信してパッチを投げておきました。

次のバージョンで改善されるとうれしいという人は、たくさん返信することできっとなおしてくれるはず。

 

あと、カタカナで検索すると検索結果が表示されないっぽい。amazon の方からはちゃんと検索結果が返ってきているみたいだし、検索結果がすべて表示されていたあと、Loading… が消えない。

なお、ブラウザは Safari。

前者の問題は、Firebug でデバッグしてみるとこの問題なので、Accordion Plugin をインストールすればいいのかなと思ってインストールしたらカタカナでは検索できるようになったが、Firebug で次のエラーが出てしまう。

jQuery(rslt).appendTo(“#wpa”).Accordion is not a function

wp-amazon/js/wp-amazon.js

Line 177

 

どうも、jQuery の Accordion プラグインがちゃんと組み込まれていないだ。最新版だとうまく動作しなかったのでこのサイトから、jquery.accordion.pack.js をダウンロードしてきて wp-amazon/js に accordion.js にリネームする。

さらに、amazon.php を次のように accordion.js を読み込むように変更したらちゃんと Loading… も消えました。

 

@@ -200,6 +200,7 @@

     </script>

             <script type=”text/javascript” src=”../wp-content/plugins/wp-amazon/js/wp-amazon.js”></script>

             <script type=”text/javascript” src=”../wp-content/plugins/wp-amazon/js/dimensions.js”></script>

+            <script type=”text/javascript” src=”../wp-content/plugins/wp-amazon/js/accordion.js”></script>

 <?php

   }

無事解決してよかった。この件も報告しておいた。(現在メッセージの承認待ちっぽい)

めでたし、めでたし。

wordpress 2.5.1 にアップデートした

wordpress 2.5 がリリースされたあとしばらく様子をみていたが、マイナーアップ版の 2.5.1 からバージョンアップしてみた。

以下、バージョンアップ方法です。

環境: wordpress me 2.3.1 から wordpress 2.5.1 英語版 + WP Multibyte Patch

バージョンアップ方法

  1. データベースのバックアップを取る(mysqdump とかで)
  2. 古い wordpress ディレクトリをリネームする
  3. wordpress 2.5.1 をダウンロードして展開する
  4. 古い wordpress ディレクトリにある wp-config.php を参考にデータベースの接続情報とテーブル名などを設定する(そのまま wp-config.php はコピーせずに、wp-config-sample.php をコピーして設定しなおした)
  5. 管理画面へアクセスして、データベースをバージョンアップする(特に何の問題もなくバージョンアップできた)
次のプラグインを入れた。
昔使っていた wordpress me 2.3.1 は本体にいろいろと変更をしていたが、バージョンアップしたことでこの変更が消えてしまった。たしか、Feed まわりの不具合があったと思ったが確認した感じでは問題なかった。
動作も体感できるほど早くなった。
wordpress + nginx の組合せはよさそうなので、別のサーバで試してみたい。
あわせて、wordpress のテーマも切替えてみた。なかなかよい。