Es un día triste en el mundo cuando busco algo en Google y no me devuelve nada. Estoy tratando de usar el selector de fecha predeterminado (o CUALQUIER marcador de fecha en este momento) y no puedo debido a mi falta de conocimiento con Wordpress / PHP. En mi plugin, estoy intentando registrar jquery y la interfaz de usuario y aparentemente estoy rompiendo otras partes de WordPress en el proceso. ¿Puede alguien decirme qué estoy haciendo mal y si pueden proporcionar una solución de trabajo, eliminaré todo mi código:
add_action('init', 'add_styles');
function add_styles(){
wp_deregister_style('simpleschoolstyles');
wp_register_style('simpleschoolstyles', SSM_STYLEFILE);
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js');
wp_deregister_script( 'jquery-ui' );
wp_register_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
wp_deregister_style( 'jquery-ui' );
wp_register_style( 'jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/pepper-grinder/jquery-ui.min.css' );
wp_deregister_script('maskedinput');
wp_register_script('maskedinput', SSM_PLUGIN_URL . '/includes/js/jquery.maskedinput.min.js');
wp_deregister_script('simpleschool');
wp_register_script('simpleschool', SSM_PLUGIN_URL . '/includes/js/simpleschool.js');
}
add_action('wp_enqueue_scripts', 'load_scripts');
add_action('admin_enqueue_scripts', 'load_scripts');
function load_scripts()
{
wp_enqueue_style('jquery-ui');
wp_enqueue_style('simpleschoolstyles');
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui');
wp_enqueue_script('maskedinput');
wp_enqueue_script('simpleschool');
}
Necesito que jQuery esté disponible en el área de administración, así como en el front-end para la entrada de datos del usuario. Por favor alguien ayuda. Estoy a punto de arrancarme las uñas de los pies ya que ya me he arrancado todo el cabello ... Supongo que debo estar haciendo cola en el momento equivocado, pero nuevamente, debido a mi limitado conocimiento de WordPress, me he cavado. Una tumba rápidamente.
ACTUALIZACIÓN: Modifiqué mi script y ahora solo estoy cargando la interfaz de usuario de jQuery y he probado que jQuery y la interfaz de usuario están cargadas y tienen éxito para esos dos, pero no un objeto existente en el DOM:
add_action('init', 'init_scripts');
function init_scripts(){
wp_deregister_style('simpleschoolstyles');
wp_register_style('simpleschoolstyles', SSM_STYLEFILE);
//wp_deregister_script( 'jquery-ui' );
wp_register_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
//wp_deregister_style( 'jquery-ui' );
wp_register_style( 'jquery-ui-pepper-grinder', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/pepper-grinder/jquery-ui.min.css' );
//wp_deregister_script('maskedinput');
wp_register_script('maskedinput', SSM_PLUGIN_URL . '/includes/js/jquery.maskedinput.min.js');
//wp_deregister_script('simpleschool');
wp_register_script('simpleschool', SSM_PLUGIN_URL . '/includes/js/simpleschool.js');
wp_enqueue_style('jquery-ui-pepper-grinder');
wp_enqueue_style('simpleschoolstles');
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery-ui' );
wp_enqueue_script('simpleschool');
}
Mi prueba:
jQuery(document).ready(function(){
//jQuery('.datepick').mask("99/99/9999");
//jQuery('.phone').mask("(999) 999-9999");
jQuery( '.datepick' ).datepicker( 'option', 'dateFormat', 'yyyy-mm-dd' ); // <-- this fails ????
alert('jQuery BETTER BE LOADED!!!'); // <---this worked
jQuery('<div>crazy wordpress and their php</div>').dialog(); // <--- this worked too
});
fuente
ajax.googleapis.com
.Respuestas:
Dado que todas las bibliotecas que necesita para el selector de fechas están incluidas en WordPress y están registradas con todas las dependencias apropiadas, todo lo que realmente necesita hacer es:
Si observa el origen de la página, verá que jQuery, jQuery-UI y jQuery-UI-Datepicker están todos cargados.
Por supuesto, tendrá que cargar cualquier otro script usted mismo de la manera en que ya lo está, aunque debe registrarlos con sus dependencias: tercer parámetro.
Por ejemplo...
De esa manera, podrías cargar eso con ...
... y sepa que las dependencias, jQuery, también se cargarán.
fuente
wp_enqueue_scripts
... se cargará en todas partes en el front end, sin contar la página de inicio de sesión. Pero realmente desea cargar los scripts solo en las páginas particulares que los necesitan para poder modificar esa devolución de llamada para que sea más específica de la página. Para el uso del backend,admin_enqueue_scripts
pero de nuevo, realmente solo desea cargarlos donde sea necesario. Hay varios ganchos específicos de página en el backend. No puedo decir qué necesitas sin saber dónde necesitas los scripts.Para complementar la excelente respuesta de @ s_ha_dum , aquí hay un ejemplo que muestra cómo usar el selector de fecha jQuery UI incorporado en su página de complementos.
El resultado se verá así:
Descargar en GitHub .
Las partes más importantes:
datepicker({ dateFormat: "yy-mm-dd" })
, para que sepa qué esperar en su controlador de devolución de llamada.Primero construí una clase base para tener algo que pueda usar en otras respuestas también y para mantener el código real para el script de selección de fecha específico y simple.
Clase base
Wpse_Plugin_Options_Page
Ahora tenemos que redefinir solo las piezas más importantes. Agradable y corto.
Clase especial
Wpse_Datepicker_Example
Todavía hay mucho espacio para mejoras, pero para empezar debería ser útil.
fuente
Hay varias formas de incluir jQuery en un tema. Siempre uso la versión incluida de WP que me parece muy simple. Para configurar correctamente las cosas, debemos asegurarnos de que la página WP tenga los siguientes archivos para ser incluidos en la carga de la página. Para cargar el script y el estilo de los fuelles, agregue el código de los fuelles en el archivo functions.php del tema.
Script para uso frontal
Script para uso de back-end
Podemos escribir una función que se enganche para páginas específicas, como single.php, page o plugin page. He agregado o enganchado en 'options-general.php' para mostrar en Settigns-> Date Picker . Simplemente ponga este código también archivo funtions.php o debajo de ese código.
Después de agregar este código, obtendrá un selector de fecha en Menú de administración-> Configuración-> Selector de fecha . Si necesita ayuda para obtener esta opción, solicite cualquier consulta y agregue comentarios sobre Agregar un jQuery DatePicker al tema o complemento de WordPress .
fuente