新規にトピックを立てるべきか、過去の似たような事例に追記するか悩みましたが別のプラグインという事でトピックを立てました。
回答者や他の利用者から見ると、この方が便利です。ありがとうございます。
Tue Jun 03 21:57:10 2008] [error] [client ###.###.###.###] PHP Fatal error: Cannot redeclare auth_redirect() (previously declared in /home/*/public_html/wp-includes/pluggable.php:607) in /home/*/public_html/wp-content/plugins/ktai_style/admin/pluggable-override.php on line 13,
これはちょっと不思議ですね。本来、Ktai Style の pluggable-override.php が先に実行されて、その後、WordPress コアの pluggable.php が実行されます。この順序だと、関数の二重定義エラーは出ません。となると、Events Calendar が pluggable.php を先に実行させてしまっている可能性が大です。
実際、ec_js.class.php で wp-includes/pluggable.php を require_once しています。正直、これはプラグインの作り方として行儀が悪すぎます!! 他にも、pluggable.php の関数をオーバーライドする機構のプラグインがあった場合、問題が発生する可能性が大です。
ということで、「こんな行儀の悪いプラグインは使用中止する」のがベストです。できれば、作者に「pluggable.php をプラグイン初期化時に include するのは反則だ」と修正を依頼してみてください (ec_js.class.php の読み込みタイミングを init 時点にすれば OK)。
とりあえずの回避策としては、Events Calendar よりも Ktai Style が先に実行されるようにすればよいです。つまり、Events Calendar の名前を変更して「Z_Event Calendar」とかにすれば大丈夫でしょう。events-calendar.php の冒頭にある Plugin Name: をいじってみてください。
lilyfan 様
ご助言の程ありがとうございます。
Events Calendar が pluggable.php を先に実行させてしまっている可能性が大
確かに、lilyfan様の仰る通り行儀が悪いプラグインの様です。。という事でご助言の様に作者(Luke Howell)のプラグインリリースのコメント欄に記述してみようかと思います。
# 如何せん英文があまり得意ではないので意味合いが通じるかwww
なお、回避策を実環境でテストしてみましたところ、Plugin Name:を最後にする様な正に「Z_Event Calendar」に変更して有効化しましたが、依然として同様のエラーが出力されると言った結果になってしまいました。
この回避策がダメということだとやはり後は、作者の意向による感じでしょうか。。。
なお、回避策を実環境でテストしてみましたところ、Plugin Name:を最後にする様な正に「Z_Event Calendar」に変更して有効化しましたが、依然として同様のエラーが出力されると言った結果になってしまいました。
WordPress 管理パネルの「プラグイン」で、Ktai Style が Z_Events Calendar より上に表示されてますでしょうか? そうでないなら、プラグインのフォルダー名も z_events_calenar などにしてみるとどうでしょう??
それでもダメなら、Events Calendar 作者に直してもらわないと無理ですね……。以下のような内容で伝わるかと思います。
I am disapointed that your plugin includes pluggable.php when called by WordPress. It is a bad manner to do so, because other plugins cannot override functions in the file. These functions are wrapped by “if (function_exists(…))”, and a plugin can define original functions with the same name.
Please not to include pluggable.php when your plugin are called. I suggest that to include ec_js.php at init() fook.
lilyfan 様
英文までご用意頂き誠にありがとうございます。早速先方へコメントさせていただきます。
また、ご助言頂いたフォルダ名毎変更してみるもPlugin Name:を変更した際についでに実践してみましたが、プラグイン有効時にエラーが起きましたのでフォルダ名は変更できない様子です。
※なお、Plugin Name:を Z_Events Calendar にしたときは該当プラグインは順位が一番下に来ておりました。
何かと不自由なプラグインでなんだかなぁという感はありますが作者の意向を伺ってみようと思います。
>ALL
一旦はクローズしますが、その後作者の意向で変更されるようなことがあればまた報告したいと思います。