先週末にustでみたPHPカンファレンス 2013+WordCampのライトニングトークでマスク・ド・レガシー氏がWordPressのコードはレガシーでヤバイかもしれないと発表していた。これには全面的に賛同せざるを得ない。開発環境をPHP5.5にあげたらさっそく問題に遭遇した。マスクマンは無事に帰れただろうか。
なおWordPressはこれを書いている時点で最新の3.6.1。
WordPressで WP_DEBUG
を有効にするともれなく以下の警告が発生する。
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
wp-includes/wp-db.php on line 1142
暫定対策としてDeprecatedのエラーを非表示にする場合、 wp-includes/load.php
を直接いじるか、wp_debug_modeが呼ばれた後の何かしらのアクションで error_reporting( E_ALL ^ E_DEPRECATED);
呼び出すかである。とりあえず開発環境なので wp-includes/load.php
の263行あたりを修正した。
function wp_debug_mode() {
if ( WP_DEBUG ) {
// error_reporting( E_ALL );
error_reporting( E_ALL ^ E_DEPRECATED);
基本的にはPDOに置き換えるべきで、WordPressではデータベース処理はwp-db.phpでカプセル化されているので実装はそれほど難しくないと思うが、問題はユーザ環境によってPDOやPDO_mysqlが必ずしも有効になっているとはかぎらないところにあり、おそらく慎重にならざるを得ないだろう。WordPressのレガシコードはしばらく続く予感。