Portanto, continuo com esse problema e estou apenas procurando a melhor e mais simples solução para resolver esse problema.
Eu vim para fazer uso de tipos de postagem personalizados em muitos projetos diferentes e os estendi com metaboxes personalizados, que foram estendidos ainda mais adicionando scripts personalizados, como seletores de calendário de eventos jQuery ... Tudo isso funciona muito bem, exceto por um problema importante ... Não quero que esses scripts jQuery personalizados sejam carregados em todas as páginas do administrador.
Essencialmente, estou apenas procurando uma maneira de carregar esses campos de jquery personalizados quando estou na página "editar postagem" para um tipo de postagem ESPECÍFICO.
Qual é a melhor solução aqui?
ATUALIZAÇÃO 1
Primeiro de tudo, muito obrigado.
Na verdade, estou chocado que os desenvolvedores de plugins não se certifiquem de coisas assim, porque, como eu estou descobrindo, esse é um dos principais motivos pelos quais existem problemas com plugins diferentes.
Estou tendo mais alguns problemas com isso. Por exemplo...
Modifiquei o script para chamar a instrução if assim:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Como você pode ver, estou tentando configurar as coisas para que meus scripts sejam chamados apenas ao adicionar ou editar uma publicação no tipo de publicação de "eventos".
Eu não quero que o script seja carregado em nenhuma outra página e também não quero que ele seja executado na lista de páginas dentro do tipo de postagem de "eventos", então eu acho que a instrução if está correta.
No entanto, o problema parece ser que o script só é carregado quando eu crio uma nova postagem nesse tipo de publicação, mas parece não funcionar quando estou editando uma publicação existente.
Você poderia testar isso e talvez me informar o que eu poderia estar fazendo de errado?
Aqui está o código exato que eu estou usando ... talvez haja uma maneira melhor ou simples de fazer isso?
<?php
// INCLUDE METABOX CUSTOM JQUERY DATEPICKER 2
add_action('admin_init','load_admin_datapicker_script');
function load_admin_datapicker_script() {
global $pagenow, $typenow;
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events') {
$ss_url = get_bloginfo('stylesheet_directory');
wp_enqueue_script('jquery');
wp_enqueue_script('custom_js_jquery_ui',"{$ss_url}/admin-metabox/js/jquery-ui-1.7.1.custom.min.js",array('jquery'));
wp_enqueue_script('custom_js_daterangepicker',"{$ss_url}/admin-metabox/js/daterangepicker.jQuery.js",array('jquery'));
wp_enqueue_script('custom_js_custom',"{$ss_url}/admin-metabox/js/custom.js",array('jquery'),NULL,TRUE);
wp_enqueue_style('custom_css_daterangepicker',"{$ss_url}/admin-metabox/css/ui.daterangepicker.css");
wp_enqueue_style('custom_css_jquery_ui',"{$ss_url}/admin-metabox/css/redmond/jquery-ui-1.7.1.custom.css");
}
}
Além disso ... se eu quisesse adicionar três tipos de postagem e carregar scripts JS diferentes para cada tipo de postagem, duplicaria o código acima três vezes separadas ou isso não é uma boa maneira de fazer isso? Por exemplo ... seria melhor chamar apenas: global $ pagenow, $ typenow; No topo do meu arquivo de funções, isso importa ou complica quando o duplico mais de uma vez?
Em um problema diferente relacionado ao mesmo ... Por exemplo, estou utilizando o plug-in "gravity forms", mas notei que seus scripts são executados em todas as páginas do administrador, causando problemas com outros plug-ins. Como eu modificaria o script deles para garantir que os scripts sejam carregados apenas quando eu precisar deles.
ATUALIZAÇÃO 2
Modifiquei meu arquivo functions.php com o código fornecido por Mike (abaixo), no entanto, parece que o javascript aplicável ainda está sendo incluído quando você cria uma NOVA postagem ou página. Isso significa que quando você tenta criar uma NOVA Postagem ou Página, criando uma nova postagem / página padrão do wordpress ou quando você cria uma NOVA postagem / página com base em um dos seus tipos de postagem personalizados. O código proposto por Mike está trabalhando em todas as outras páginas de administração e funciona quando você "EDITA" uma postagem / página existente ou um tipo de postagem personalizado. Alguma modificação sugerida para corrigir este trabalho?
Aqui está meu código atual:
<?php
add_action('admin_init','load_admin_datapicker_script');
function load_admin_datapicker_script() {
global $pagenow, $typenow;
if (empty($typenow) && !empty($_GET['post'])) {
$post = get_post($_GET['post']);
$typenow = $post->post_type;
}
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events') {
$ss_url = get_bloginfo('stylesheet_directory');
wp_enqueue_script('jquery');
wp_enqueue_script('custom_js_jquery_ui',"{$ss_url}/admin-metabox/js/jquery-ui-1.7.1.custom.min.js",array('jquery'));
wp_enqueue_script('custom_js_daterangepicker',"{$ss_url}/admin-metabox/js/daterangepicker.jQuery.js",array('jquery'));
wp_enqueue_script('custom_js_custom',"{$ss_url}/admin-metabox/js/custom.js",array('jquery'),NULL,TRUE);
wp_enqueue_style('custom_css_daterangepicker',"{$ss_url}/admin-metabox/css/ui.daterangepicker.css");
wp_enqueue_style('custom_css_jquery_ui',"{$ss_url}/admin-metabox/css/redmond/jquery-ui-1.7.1.custom.css");
}
}
?>