如何限制wp-admin并防止上传错误

时间:2015-09-18 作者:JediTricks007

我需要将wp admin访问权限限制为所有无法管理\\u选项且仍允许用户在前端添加媒体的用户。

function wpse_11244_restrict_admin() {
    if ( ! current_user_can( \'manage_options\' )  && $_SERVER[\'PHP_SELF\'] != \'/wp-admin/admin-ajax.php\' ) {
        wp_redirect( home_url() );
    }
}
add_action( \'admin_init\', \'wpse_11244_restrict_admin\', 1 );
我在堆栈溢出上找到了这段代码,它对我禁用后端非常有用。我发现的唯一问题是,当我在前端帖子上添加媒体时,我遇到了以下错误。

media upload error

当我刷新页面并单击添加媒体时,我现在看到显示上载错误的图像。

enter image description here

图像确实会上传,但用户知道这一点的唯一方法是刷新图像。

我怎样才能禁用所有内容的后端访问,同时仍允许他们上载媒体?

1 个回复
最合适的回答,由SO网友:Privateer 整理而成

你只需要一件额外的东西。

以下是我通常用于执行您正在执行的操作的代码:

function pws_block_admin() {

    if (
        // Look for the presence of /wp-admin/ in the url
        stripos($_SERVER[\'REQUEST_URI\'],\'/wp-admin/\') !== false
        &&
        // Allow calls to async-upload.php
        stripos($_SERVER[\'REQUEST_URI\'],\'async-upload.php\') === false
        &&
        // Allow calls to admin-ajax.php
        stripos($_SERVER[\'REQUEST_URI\'],\'admin-ajax.php\') === false
    ) {
        if ( !current_user_can(\'manage_options\') ) {
            $redirect_to = home_url();
            wp_redirect($redirect_to, 302);
        }
    }
}
add_action(\'admin_init\', \'pws_block_admin\', 0);
看起来您只是缺少了允许异步上载的排除项。php正常工作。