我需要将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 );
我在堆栈溢出上找到了这段代码,它对我禁用后端非常有用。我发现的唯一问题是,当我在前端帖子上添加媒体时,我遇到了以下错误。
当我刷新页面并单击添加媒体时,我现在看到显示上载错误的图像。
图像确实会上传,但用户知道这一点的唯一方法是刷新图像。
我怎样才能禁用所有内容的后端访问,同时仍允许他们上载媒体?
最合适的回答,由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正常工作。