WordPress

remove_post_type_supportの挙動が変わったメモ

挙動が変わったタイミング

Wordpress4.9.3から4.9.8にアップデートしたタイミングで発生しました。

挙動が変わった関数

remove_post_type_support
wordpress管理画面でのいらない機能を無効にする関数です。

今回は以下のような指定をしていました。

remove_post_type_support.php
remove_post_type_support('post','editor');

エラーコード

ブラウザのコンソールで出ていたエラー

error.js
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を呼び出しています。

example.js
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のみなので
こちらの配列が変わっているのかもしれません。
どなたかこのあたり心当たりのある方
コメントいただけましたらうれしいです。