No puedo hacer que jQuery se encuele en el script de edición de entradas

13 ene 2013, 21:02:23
Vistas: 460
Votos: -1

En el código a continuación, a menos que haga referencia directa a la biblioteca jQuery, mis funciones jQuery en la página no funcionan. ¿Qué está mal con el método de encolado que estoy intentando usar?

En functions.php:

if(is_admin())
{

/* CARGAR SCRIPTS DE ADMINISTRACIÓN
**********************************/
require_once(TEMPLATEPATH . '/functions_private.php');

}

En functions_private.php:

if( 'post.php' == $pagenow )
{

    add_action('admin_print_scripts', 'my_load_ui_script');

    function my_load_ui_script()
    {
    wp_enqueue_script('jquery');
    ?>
        <!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>-->
        <script>
        if(typeof jQuery!="undefined"){
            alert("Tienes jQuery cargado");//NO SE EJECUTARÁ A MENOS QUE INCLUYA JQUERY MANUALMENTE
        }           

        jQuery(document).ready(function()
        {
        //código jQuery va aquí
        }

    }//FIN DE FUNCIÓN 

}//FIN DE IF
1
Comentarios

Como la pregunta es sobre los detectores de eventos en JS, por lo tanto está fuera de tema. Votado para cerrar.

kaiser kaiser
13 ene 2013 22:41:00
Todas las respuestas a la pregunta 4
4

Utiliza el hook admin_enqueue_scripts para añadir tu propio script personalizado. Colócalo en un archivo externo y usa wp_localize_script para pasar cualquier dato desde php a javascript. jQuery ya se utiliza en el área de administración, agregar una etiqueta script que lo cargue desde google romperá cosas.

function wpa80418_admin_enqueue( $hook ) {
    if( 'post.php' != $hook )
        return;
    wp_enqueue_script(
        'my_custom_script',
        get_template_directory_uri() . '/js/myscript.js',
        array('jquery')
    );
}
add_action( 'admin_enqueue_scripts', 'wpa80418_admin_enqueue' );
13 ene 2013 21:40:20
Comentarios

No estoy intentando usar mi propio script. Estoy tratando de usar la copia de jQuery de WordPress. Desafortunadamente, no está funcionando. Cuando reemplazo admin_print_scripts con admin_enqueue_scripts tampoco funciona.

Scott B Scott B
13 ene 2013 22:14:57

Prueba con el hook admin_footer

diggy diggy
13 ene 2013 22:15:57

+1 diggy! Eso funciona pero ahora mi script aparentemente ha dañado el admin de WordPress. Ninguno de los paneles se puede abrir/cerrar. Mi script funciona bien aunque. Estoy obteniendo un error en la consola: Uncaught TypeError: Cannot call method 'toLowerCase' of undefined. Por favor publica tu respuesta para que pueda aceptarla.

Scott B Scott B
13 ene 2013 22:24:58

porque estás agregando tu propia copia de jQuery desde una fuente externa, nuevamente, esto romperá la interfaz de administración como ya has visto. WordPress ya incluye jQuery, debería estar incluido en la mayoría de las páginas de administración, ya que todo el javascript en la interfaz de administración lo utiliza. no inyectes etiquetas de script directamente en la página, encola archivos externos para tus propios scripts.

Milo Milo
13 ene 2013 22:54:59
2

WordPress jQuery no admite $ por defecto.

Primero añade jQuery.

function my_scripts_method() {
    wp_enqueue_script(array('jquery'));
}
add_action('admin_enqueue_scripts', 'my_scripts_method');

Reemplaza este código:

jQuery(document).ready(function()
        {
        //código jQuery va aquí
        }

con:

jQuery(document).ready(function($) {
    // $() funcionará como un alias para jQuery() dentro de esta función
});
13 ene 2013 21:21:09
Comentarios

No estoy usando el carácter $ en mi código jQuery, así que esto no es realmente pertinente a la pregunta. Mi problema es que jQuery no se carga en absoluto (ver pregunta actualizada)

Scott B Scott B
13 ene 2013 21:32:47

¡Ver respuesta actualizada!

Muhammad Furqan Muhammad Furqan
13 ene 2013 21:41:28
0

El hook admin_footer resulta ser el adecuado para el código de Scott B. Sin embargo, generalmente se recomienda encolar los scripts (y declarar su dependencia de jQuery) como se describe en la respuesta de @Milo

13 ene 2013 22:35:09
0

Escuchadores de eventos

Sencillo:

  • El script se ejecuta inmediatamente cuando lo ejecutas, ya que no utiliza ningún escuchador de eventos de JavaScript como esperar a que se cargue el DOM, la ventana o cualquier otro elemento.
  • El script encolado (jQuery) se renderizará en sus ganchos apropiados: En el head o - si se encola a mitad de página - en el footer.

Por lo tanto, jQuery simplemente no está disponible cuando lo llamas.

13 ene 2013 22:40:02