限制对管理员的访问,但允许ADMIN_POST挂钩

时间:2018-11-07 作者:Marcelo

我使用这个钩子只允许管理员角色访问仪表板

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\' );
但是第一个钩子挡住了第二个钩子。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

您所需要做的就是修改限制用户的方法。

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();
    }
}

结束