挙動が変わったタイミング
Wordpress4.9.3から4.9.8にアップデートしたタイミングで発生しました。
挙動が変わった関数
remove_post_type_support
wordpress管理画面でのいらない機能を無効にする関数です。
今回は以下のような指定をしていました。
remove_post_type_support('post','editor');
エラーコード
ブラウザのコンソールで出ていたエラー
Uncaught ReferenceError: tb_show is not defined
at HTMLInputElement.<anonymous> (example.js?ver=4.9.8:12)
at HTMLInputElement.dispatch (load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,underscore,backbone,wp-util,&load[]=wp-backbone,media-models,moxiejs,plupload,wp-plupload&ver=4.9.8:3)
at HTMLInputElement.r.handle (load-scripts.php?c=1&load[]=jquery-core,jquery-migrate,utils,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,jquery-ui-sortable,underscore,backbone,wp-util,&load[]=wp-backbone,media-models,moxiejs,plupload,wp-plupload&ver=4.9.8:3)
ソースコード
jsでwordpressコア内のthickboxを使って
media-upload.phpを呼び出しています。
tb_show('', 'media-upload.php?type=image&TB_iframe=true');
具体的にどう挙動が変わったか
ユーザーによって動作するようphp側で指定していました。
以前は投稿者でも問題なく動作することができたのですが
4.9.8にアップロードしたタイミングで前述のエラーがでて
機能もしなくなりました。
編集者以上の権限だと今回のエラーは発動しません。
対応策
remove_post_type_support()は無効にしました。
いい対応ではないですが
取り急ぎ機能させることの優先順位が高かったのと
worpdress管理画面の調整でほかにも
cssで調整しなければならない部分があったので
cssのdisplay: noneで対応しました。
こちらで機能が復活したのは
remove_post_type_supportを実行すると
おそらくuserroleのupload_filesが
何らかの影響を受けて実行できないのでは?
と予想しています。
原因の予想
これらの状況からuser権限周りの
関数を眺めてみたのですがはっきりと突き止められていません。
remove_post_type_support()内を確認すると
$_wp_post_type_featuresのunsetのみなので
こちらの配列が変わっているのかもしれません。
どなたかこのあたり心当たりのある方
コメントいただけましたらうれしいです。