Así que sigo encontrándome con este problema y solo estoy buscando la mejor y más simple solución para resolver este problema.
He llegado a hacer uso de tipos de publicación personalizados en muchos proyectos diferentes y los he extendido con metaboxes personalizados que luego he ampliado agregando scripts personalizados como selectores de calendario de eventos jQuery ... Todo esto funciona muy bien, excepto por un tema clave ... No quiero que estos scripts personalizados de jQuery se carguen en cada página del administrador.
Básicamente, solo estoy buscando una manera de cargar estos campos jquery personalizados cuando estoy en la página "editar publicación" para un tipo de publicación ESPECÍFICO.
¿Cuál es la mejor solución aquí?
ACTUALIZACIÓN 1
Antes que nada, muchas gracias.
En realidad, estoy sorprendido de que los desarrolladores de complementos no se aseguren de cosas como esta porque, como estoy descubriendo, esta es una de las razones clave por las que existen problemas con diferentes complementos.
Estoy teniendo algunos problemas adicionales con esto. Por ejemplo...
He modificado el script para llamar a la declaración if de esta manera:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Como puede ver, estoy tratando de configurar las cosas para que mis guiones SOLAMENTE se llamen cuando agrego o edito una publicación dentro del tipo de publicación de "eventos".
No quiero que el script se cargue en ninguna otra página y tampoco quiero que se ejecute en la lista de páginas dentro del tipo de publicación de "eventos", por lo que creo que la declaración if es correcta.
Sin embargo, el problema parece ser que el script solo se carga cuando creo una nueva publicación dentro de este tipo de publicación, pero no parece funcionar cuando estoy editando una publicación existente.
¿Podría probar esto y quizás decirme qué podría estar haciendo mal?
Aquí está el código exacto que estoy usando ... ¿tal vez hay una manera mejor o simple de hacer esto?
<?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");
}
}
Además ... si quisiera agregar tres tipos de publicación y cargar diferentes scripts JS para cada tipo de publicación, ¿simplemente duplicaría el código anterior tres veces por separado o no es esta una buena manera de hacerlo? Por ejemplo ... ¿sería mejor simplemente llamar: global $ pagenow, $ typenow; En la parte superior de mi archivo de funciones, ¿importa o complica las cosas cuando lo duplico más de una vez?
En un problema diferente relacionado con el mismo ... Por ejemplo, estoy utilizando el complemento "formas de gravedad", pero he notado que sus scripts se ejecutan en cada página del administrador, lo que está causando problemas con otros complementos. ¿Cómo haría para modificar su script para asegurar que los scripts solo se carguen cuando los necesite?
ACTUALIZACIÓN 2
Modifiqué mi archivo functions.php con el código proporcionado por Mike (a continuación), sin embargo, parece que el javascript aplicable todavía se incluye cuando crea una NUEVA publicación o página. Esto significa que cuando intenta crear una NUEVA publicación o página al crear una nueva publicación / página predeterminada de WordPress o cuando crea una NUEVA publicación / página basada en uno de sus tipos de publicaciones personalizadas. El código propuesto por Mike ESTÁ funcionando en todas las demás páginas de administración y sí funciona cuando "EDITAS" una publicación / página existente o un tipo de publicación personalizada. ¿Alguna modificación sugerida para hacer que este trabajo sea correcto?
Aquí está mi código actual:
<?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");
}
}
?>