[WordPress] WordTwitプラグインでTwitterのアプリ認証完了時にエラーが出る件

  • このエントリーをはてなブックマークに追加

表題のとおりですが、こんなエラーがでて一向に認証できなかったりしました。

Fatal error: Call to undefined function wordtwit_parsexml() in /virtual/username/public_html/hogehoge/wp-content/plugins/wordtwit/include/oauth-twitter.php on line 378

一応暫定的ですが、対処できたのでメモ。

状況分析

バージョンはWordPress3.2+WordTwit2.6.4。
まあ、運用環境はいつも愛用のCORESERVER.JPなんですが、プラグインのアップデートを久々にしたら出てきました。
エラー内容は見る限り「wordtwit_parsexmlなんて関数ねぇよ!ヴォケ!」なわけですけど、なんでやろ。

解決方法

まずはwordtwit_parsexml()の居場所を突き止めます。該当箇所はプラグインディレクトリのトップにあるxml.php。
今度はxml.phpをincludeしている箇所を特定します。
ここですね。同じ階層にあるwordtwit.phpの25行目。

[php start-line=”23″ title=”wordtwit.php” mark=”3″]
require_once( ABSPATH . ‘wp-includes/class-snoopy.php’ );

require_once( ‘xml.php’ );
require_once( ‘tinyurl.php’ );
require_once( ‘include/widgets.php’ );
require_once( ‘include/oauth-twitter.php’ );
[/php]

25行目をごにょごにょしてみたら、おそらく別のプラグインが同名の「xml.php」をrequireしてると思われることが判明しました。
じゃあ、絶対パスで書いちゃえ!

[php start-line=”23″ title=”wordtwit.php” mark=”3″]
require_once( ABSPATH . ‘wp-includes/class-snoopy.php’ );

require_once( dirname(__FILE__) . ‘/xml.php’ );
require_once( ‘tinyurl.php’ );
require_once( ‘include/widgets.php’ );
require_once( ‘include/oauth-twitter.php’ );
[/php]

次回アップデートでかき消されてしまうあんまりイケてない対処ですが、これは作り手が悪い。たぶん。
ということで、これで一応解決です。
ちなみに競合していたプラグインは「Nico Nico Video Linker」ってやつでした。xml.phpってありがちな名前だから他にもありそう・・・

以上!

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。




コメントを残す