Remova o access ao painel, mas permite o upload do arquivo ajax

Quero restringir o access do painel para usuários com uma function de usuário personalizada.

O código funciona bem e posso executar solicitações personalizadas do ajax com sucesso, no entanto, não é possível carregar um arquivo usando o carregador do wp.media.

Este é o meu código de restrição

add_action('admin_init', 'no_mo_dashboard'); function no_mo_dashboard() { if (!current_user_can('custom_role') && !(defined('DOING_AJAX') && DOING_AJAX)) { wp_redirect(home_url()); exit; } } 

Parece que o carregador do wp.media está carregando o arquivo via ajax, no entanto, a declaração acima não o permite (acho que DOING_AJAX não está configurado?)

Abaixo está o meu código de upload

 jQuery(document).ready(function($){ var custom_uploader; $('#upload_image_button').click(function(e) { e.preventDefault(); //If the uploader object has already been created, reopen the dialog if (custom_uploader) { custom_uploader.open(); return; } //Extend the wp.media object custom_uploader = wp.media.frames.file_frame = wp.media({ title: 'Choose Image', button: { text: 'Choose Image' }, multiple: false, library : { type : false, }, }); $this = $(this); //When a file is selected, grab the URL and set it as the text field's value custom_uploader.on('select', function() { attachment = custom_uploader.state().get('selection').first().toJSON(); $('.uploaded_image .circle_avatar').css("background-image", "url("+attachment.sizes.apcc_avatar.url+")"); }); //Open the uploader dialog custom_uploader.open(); }); }); 

Alguma idéia de onde eu estou indo errado aqui?

Saúde Gente!

EDITAR

Curiosamente, o código a seguir funciona

 if (!current_user_can('custom_role') && !(defined('DOING_AJAX') && DOING_AJAX) && count($_POST) == 0) { wp_redirect(home_url()); exit; } 

No entanto, posso ver os possíveis riscos de segurança aqui (alguém pode postar um formulário para uma página de administrador e obter access)

Solutions Collecting From Web of "Remova o access ao painel, mas permite o upload do arquivo ajax"