Eu tenho duas funções simples que carregam coisas usando wp_enqueue_style()
e wp_enqueue_script()
, algo como estes:
function admin_custom_css()
{ wp_enqueue_style( 'stylesheet_name', 'stylesheet.css') };
function admin_custom_js
{ wp_enqueue_script( 'javascript_file', 'script.js') };
... e algumas páginas de administração, criadas com add_menu_page()
eadd_submenu_page()
function my_menu() {
add_menu_page('Page 1', 'bar', 'something', 'else', 'foo');
add_submenu_page( 'theme_menu', 'Subpage 1', 'Subpage', 'something', 'else', 'foo');
}
add_action('admin_menu', 'my_menu');
Como carrego minhas duas funções apenas nessas páginas?
Agora eu estou usando:
add_action('admin_init', 'admin_custom_css' );
add_action('admin_init', 'admin_custom_js' );
Mas ele carrega meus arquivos em todas as páginas de administração, o que não é nada agradável.
Posso fazer isso através de uma linha simples functions.php
ou preciso enfileirá-los em minhas páginas separadamente (prefiro a primeira opção fortemente, pois precisaria editar várias funções de criação de página de administração).
Obrigado!
wp-admin
wp-enqueue-script
admin-menu
wp-enqueue-style
admin-init
Wordpressor
fonte
fonte
Respostas:
add_menu_page
eadd_submenu_page
ambos retornam o "sufixo do gancho" da página, que pode ser usado para identificar a página com determinados ganchos. Como tal, você pode usar esse sufixo em combinação com os ganchos variáveisadmin_print_styles-{$hook_suffix}
eadmin_print_scripts-{$hook_suffix}
direcionar especificamente essas páginas.Acho que esse é um método limpo para adicionar tudo isso, pois tudo é tratado na única função. Se você decidir remover essa funcionalidade, basta remover a chamada para a única função.
fonte
admin_print_scripts()
estados "admin_print_scripts
não deve ser usado para enfileirar estilos ou scripts ". A resposta de @TomAuger é na verdade a correta, embora não seja a ideal. Seria benéfico se a equipe do WP adicionasse umadmin_enqueue_scripts-(hookname)
gancho ...O problema com a resposta @tollmanz é que, como você está utilizando os ganchos -print-styles e -print-scripts, deve gerar o HTML para carregar seus scripts manualmente. Isso não é o ideal, pois você não obtém a boa dependência e o versionamento que acompanham o
wp_enqueue_script()
ewp_enqueue_style()
. Também não permite colocar as coisas no rodapé, se for um lugar melhor para elas.Então, voltando à pergunta do OP: qual é a melhor maneira de garantir que eu possa enfileirar o JS / CSS apenas em páginas de administração específicas?
Desligue a ação "load - {$ my_admin_page}" para fazer apenas as coisas quando a página de administração de seu plug-in específico estiver carregada e, em seguida,
Desligue a ação "admin_enqueue_scripts" para adicionar corretamente suas
wp_enqueue_script
chamadas.Parece um pouco trabalhoso, mas na verdade é muito fácil de implementar. Do topo:
fonte
load-$hook
gancho que dispara minhaoption_page_actions
função à qual posso adicionar muitos outros ganchos / filtros etc. Como essas ações são chamadas apenas na página de escolha, os ganchos além desse ponto não precisam usar os ganchos com espaço para nome (como você mostrou), que é muito mais eficiente e intuitivo.Se você usar
get_current_screen()
, poderá detectar em que página está. Há um exemplo no artigo codex que eu ligado, que mostra como usarget_current_screen()
comadd_options_page()
, este método irá funcionar para qualquer página de administração.fonte
Você pode receber a resposta e expandi-la um pouco, permitindo também o uso condicional ...
@tollmanz
Exemplo:
fonte
Como @ mor7ifer mencionado acima, você pode usar a função nativa do WordPress get_current_screen () . Se você percorrer a saída desta função, por exemplo:
... você notará uma chave chamada base . Eu uso isso para detectar em que página estou e enfileirar, desenfileirar assim:
fonte
Eu estava pensando a mesma coisa. Existe uma versão moderna que usa
admin_enqueue_scripts
:fonte
A partir da documentação :
O mesmo com
admin_print_styles
.fonte
fonte
Para fazer isso, você precisa primeiro encontrar o nome da página de administrador. Adicione
admin_enqueue_scripts
comwp_die($hook)
e vá para a sua página específica de plug-in. Você verá o nome da página.Agora copie o nome da página e use-o em condição para carregar os scripts na página específica.
fonte