Por lo tanto, continúo encontrando este problema y solo busco la mejor y más sencilla solución para resolver este problema.
He venido a hacer uso de tipos de publicación personalizados en muchos proyectos diferentes y los he ampliado con metaboxes personalizados que luego he ampliado añadiendo scripts personalizados como los selectores de calendario de eventos jQuery ... Todo esto funciona muy bien, excepto un problema clave ... No quiero que estos scripts jQuery personalizados se carguen en todas las páginas del administrador.
Básicamente, estoy buscando la manera de cargar estos campos de jquery personalizados cuando estoy en la página "editar publicación" para un tipo de publicación ESPECÍFICA.
¿Cuál es la mejor solución aquí?
ACTUALIZACIÓN 1
En primer lugar, muchas gracias.
Estoy realmente sorprendido de que los desarrolladores de complementos no se aseguren de cosas como esta porque, al descubrir que esta es una de las principales razones por las que existen problemas con diferentes complementos.
Aunque estoy teniendo algunos problemas adicionales con esto. Por ejemplo ...
He modificado la secuencia de comandos para llamar a la instrucción if como esta:
if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php' && $typenow=='events')
Como puede ver, estoy tratando de configurar las cosas para que SOLAMENTE se llame a mis scripts cuando estoy agregando o editando 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 instrucción if es correcta.
Sin embargo, el problema parece ser que la secuencia de comandos 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 tal vez me haga saber qué podría estar haciendo mal?
Aquí está el código exacto que estoy usando ... ¿quizás haya una forma mejor o más 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");
}
}
También ... si quisiera agregar tres tipos de publicaciones y cargar diferentes scripts de JS para cada tipo de publicación, ¿simplemente duplicaría el código tres veces por separado o no es una buena forma de hacerlo? Por ejemplo ... sería mejor simplemente llamar: global $ pagenow, $ typenow; ¿En la parte superior de mi archivo de funciones o 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 puedo modificar su secuencia de comandos para garantizar que las secuencias de comandos solo se carguen cuando las necesito?
ACTUALIZACIÓN 2
He modificado mi archivo functions.php con el código proporcionado por Mike (a continuación), sin embargo, parece que el javascript correspondiente aún se incluye cuando crea una publicación o página NUEVA. Esto significa que cuando intenta crear una publicación o página NUEVA mediante la creación de una nueva publicación / página de wordpress predeterminada o cuando crea una publicación / página NUEVA basada en uno de sus tipos de publicación personalizada. El código propuesto por Mike ESTÁ trabajando en todas las demás páginas de administración y FUNCIONA cuando "EDITA" una publicación / página existente o un tipo de publicación personalizada. ¿Alguna modificación sugerida para hacer este trabajo 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");
}
}
?>