web-dev-qa-db-ja.com

/wp-admin/ms-delete-site.phpを上書きするための最良の方法は何ですか

私はマルチサイトネットワークを持っていて、それが実行されないように/wp-admin/ms-delete-site.phpを保護したいです。サイトの削除はコマンドラインからのみ管理します。

今のところ一番上にwp_die()の呼び出しを追加しましたが、WPコアファイルには変更を加えずに、プラグインでこれを処理することを好みます。

これをプラグインに実装するための最良の方法は何ですか?

2
Rodrigo M

もう1つの方法は、フック map_meta_cap を調べて、ユーザーのdelete_siteの機能を削除することです。 delete_siteを許可したいときに制限されたユーザーまたはコンテキストのセットがある場合は、その機能を許可できます。

2
C C

そうです、 編集コアはノー - ノー です。

代わりに、これを実行できます。

add_action( 'current_screen', 'wpse242553_no_delete_site_screen' );
function wpse242553_no_delete_site_screen() {
    // Check to see if we're using the CLI client. If so, bail out.
    if ( 'cli' == php_sapi_name() ) {
        return;
        // I'm not sure this is strictly necessary.
    }
    if ( 'ms-delete-site' == get_current_screen()->base ) {
        // You can add whatever message you like here,
        // or even use wp_safe_redirect() to go elsewhere.
        wp_die( 'Sorry, we only delete sites from the command line.' );
    }

}

それをあなたのネットワークのすべてのサイトに適用させるために プラグイン を使わなければなりません。

参考文献

1
Pat J