Posted at

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のみなので

こちらの配列が変わっているのかもしれません。

どなたかこのあたり心当たりのある方

コメントいただけましたらうれしいです。