WordPress3.1でAdmin SSLを使う

英語のフォーラムにも出ていますが、WordPress3.1でadmin SSLを使おうとすると、

Fatal error: Cannot redeclare user_can() (previously declared in /********************/wp-includes/capabilities.php:1099) in /********************/wp-content/plugins/admin-ssl-secure-admin/admin-ssl.php on line 113

とエラーが出てしまします。(エラー出力がされない環境では、真っ白になります。)
これは、3.1のバージョンアップでWordPress本体に、Admin SSLが利用していたものと同名のuser_canという関数が実装された影響によるものです。

これを修正するには、上述の英語のフォーラムの回答と同じように、Admin SSLのuser_canという関数を別名にしてあげれば良いです。

  1. Admin SSLの全PHPファイル内のuser_canをadmin_ssl_user_canに置換
  2. current_user_canが合わせて置換されてしまうため、current_admin_ssl_user_canをcurrent_user_canに置換

こういうことが起こらないように、プラグインや独自の機能を実装する際は、Class化してクラスメソッドとしてしまうのが最善です。
Classがよく分からない場合は、関数名をユニークなものにし(接頭辞などをつける)WordPress本体や他のプラグインとの競合の可能性が極力低くしておくことが必要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です