サポート » 使い方全般 » get_media_itemという関数を無効にし自作関数を追加したい

  • hokutonojikei

    (@hokutonojikei)


    前提状況
    media-upload.php?type=image&TB_iframe=trueのような形で
    アップローダを追加しています。
    画像を選択した後にアップロードというボタンを押すと
    get_media_item関数が走っていると思います。
    このアップロードボタンを押した後に出てくる画像のデータや
    編集フォームなどを非表示にしたく調査しています。

    やってみたこと
    以下のソースを自作プラグインとして組み込んでみましたが
    反応しませんでした。

    //画像アップロード後の画面不要要素非表示のため既存の関数を削除
    remove_filter( 'async_upload_image', 'get_media_item', 10, 2 );
    //画像アップロード後の画面不要要素非表示
    add_filter( 'async_upload_image', 'jisakufanction', 10, 2 );
    //画像アップロード後の画面不要要素非表示のため既存の関数を削除
    remove_filter( 'async_upload_file', 'get_media_item', 10, 2 );
    //画像アップロード後の画面不要要素非表示
    add_filter( 'async_upload_file', 'jisakufanction', 10, 2 );
    
    //画像アップロード後の要素非表示
    function jisakufanction () {
    		echo "テスト成功";
    }

    サーバのエラーとしてはいかが吐き出されていました。
    PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'jisaku_Admin' does not have a method '__return_false'

    このクラスは上記ソースと同じphp内に書かれているもので
    管理画面のほかの部分(メニューの不要部分など)を
    非表示にしています。
    上記ソースをクラスの外に書いてテストした時に
    このエラーが出ました。

    打開策として
    cssでdisplay:noneとすれば不要な要素を非表示にすることはできました。
    が、こういった管理画面のクラス名、domの構造は変わる可能性もあると予想し
    できれば関数単位で対応したいと考えています。

    またjqueryのdom操作での対応も現在調査しています。
    ajaxでの非同期通信+iframeなどの状況で最初は
    javascriptのMutationObserverでの対応も考えてみましたが
    http://qiita.com/MysticDoll/items/316190f137af529cd33f
    こちらの記事をみて無理に対応すると
    セキュリティリスクが出そうな感じがしたので
    イベントベースでごにょごにょできないかを模索しています。
    (react,vueベースになったらこちらもやばそうですが・・・)

    とはいえwordpressのコアを把握し
    間接的にカスタマイズできれば一番いいのかなと考えています。
    間違い、その他おすすめの方法論などご教授いただけましたら幸いです。
    よろしくお願いいたします。

  • トピック「get_media_itemという関数を無効にし自作関数を追加したい」には新たに返信することはできません。