web-dev-qa-db-ja.com

Adminへのアクセスを制限し、admin_postフックを許可する

このフックを使用して、管理者ロールにのみダッシュボードへのアクセスを許可します

add_action( 'admin_init', function() {
    if ( defined('DOING_AJAX') && DOING_AJAX ) {
        return;
    }

    if ( !current_user_can('manage_options') ) {
        wp_redirect( home_url('/meu-perfil') );
        exit();
    }
});

今度は、フォームがフロントエンドで送信されたときに関数を実行する必要があります。

function editUser() {
    error_log('message');
}
add_action( 'admin_post_nopriv_add_foobar', 'editUser' );
add_action( 'admin_post_add_foobar', 'editUser' );

しかし、最初のフックは2番目のフックをブロックしています。

3
Marcelo

あなたがする必要があるのはユーザーを制限するあなたの方法を修正することだけです。

add_action( 'admin_init', function() {
    if ( (defined('DOING_AJAX') && DOING_AJAX) || ( strpos($_SERVER['SCRIPT_NAME'], 'admin-post.php') ) ) {
        return;
    }

    if ( !current_user_can('manage_options') ) {
        wp_redirect( home_url('/meu-perfil') );
        exit();
    }
}
2