Percebi que alguns plugins como o Contact-form-7 , Nextgen-gallery , possivelmente outros, têm um interessante recurso anti-registro de não registrar seus códigos de acesso quando isso is_admin()
é verdade.
O problema é que, se você deseja gerar algum conteúdo dinâmico (que pode ter código de acesso curto) a partir do ajax e usar a maneira wp "correta" de fazer isso, admin-ajax.php, é impossível não ter o WP_ADMIN verdadeiro. Veja as primeiras linhas do admin-ajax.php:
define( 'DOING_AJAX', true );
if ( ! defined( 'WP_ADMIN' ) ) {
define( 'WP_ADMIN', true );
}
Agora, parece que existem extensões PHP que permitem desabilitar uma constante definida (hacky), ou pode haver uma maneira de mexer com o sistema WP_Screen não documentado e $GLOBALS['current_screen']
tornar o is_admin()
retorno da função falso? A solução mais útil parece estar sendo postada na página ou na raiz do site.
É comum que plugins registrem seus códigos de acesso quando is_admin()
falsos? Nesse caso, não encontrei nenhuma documentação ou motivo para isso, a não ser que possa ser uma otimização prematura.
is_admin
está fazendo_it_wrong, há maneiras muito melhores no WP de verificar solicitações de ajax. Por fim, se o plug-in enfileira js / css, se funcionar bem (usando'wp_enqueue_scripts'
ação), não afetará as páginas de administração, porque esse gancho não é acionado nas páginas de administração.the_content
chamadas e as chamadas admin-ajax.Na verdade, não há razão para não registrar códigos de acesso no admin.
Se o autor dos plug-ins quiser desativar o formulário de plug-in Ajax, eles deverão fazer
em vez de procurar por admin.
Observe que, no futuro, é possível que o Shortcake seja incorporado no núcleo porque é um "Plugin de recursos".
Se isso acontecer, o código de acesso não definido em admin não funcionará com ele. Isso confirma outra vez que não há razão para não registrar códigos de acesso no administrador: até os desenvolvedores principais estão trabalhando em itens que exigem códigos de acesso disponíveis no administrador.
Dito isto, você tem possibilidades:
Em relação ao item 2, existem realmente bibliotecas que podem forçar
is_admin
a verdade. Por eles são hackish, e eu nunca usaria aqueles em produção.Um exemplo é Patchwork .
Usando-o, você pode substituir qualquer função personalizada do PHP.
Em um plugin MU, você pode fazer (completamente UNTESTED):
Isso fará com que o
is_admin()
retorno seja falso em solicitações de ajax.No entanto, como já foi dito, isso é bastante tolo e afetará o comportamento de outros plugins (e principais) com efeitos imprevisíveis.
Outra coisa que você pode fazer é registrar o manipulador de códigos de acesso do plugin nas solicitações de administrador.
Por exemplo, se o código do plug-in for:
então você pode escrever outro plugin que faça:
Dessa forma, o código de acesso será adicionado nos dois casos.
Isso pode ou não funcionar sozinho, dependendo de outro código de plug-in, mas não há uma resposta geral para isso.
fonte
add_shortcode('shortcode', array('their-class', 'their-function') )
ou similar.