2011-02-07 22 views
15

No puedo por alguna razón obtener las páginas de wordpress/wp-admin para ejecutar un archivo de consulta simple. Solo funciona si elimino el registro de jquery en my functions.php dentro de la carpeta de mi tema, pero entonces debo volver a registrar todos los archivos jquery.ui por separado, lo que es tedioso. Estoy usando la instalación multisitio de wordpress 3.0. Intento no tocar los archivos core wp.Añadiendo un script jQuery a wordpress Admin

Aparecerá en la fuente y los enlaces al archivo estarán bien, pero no ejecutará el script. Heres lo que tengo en mi functions.php:

function my_script() { 
if (!is_admin()) { 
    wp_deregister_script('jquery'); 
    wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', false, '1.4.4'); 
    wp_enqueue_script('jquery'); 
    wp_enqueue_script('custom_script', get_bloginfo('template_url').'/js/myScript.js', array('jquery')); 
} 
if(is_admin()){ 
    wp_enqueue_script('custom_admin_script', get_bloginfo('template_url').'/js/admin_script.js', array('jquery')); 
} } 

add_action ('init', 'my_script');

Aquí está mi archivo de jQuery (admin_script.js):

$(document).ready(function(){ 
alert("Hello"); }); 

cualquier ayuda sería grande.

+0

Dado que nunca soy positivo que no será en ningún conflicto, esto nosotros de forma predeterminada, ya que se ocupa de ello y puedo mantener mi normal: (función ($) {// todos mis jQuery con $ ('selectores')}) (jQuery); –

Respuesta

26

Tenga en cuenta que el jQuery incluye con Wordpress se ejecuta en modo noConflict por lo que yo sé, lo que significa que no hay $, pero en lugar jQuery. Esa es probablemente la razón por la que canceló el registro jQuery incorporado y usó el de Google CDN. Ese probablemente no se ejecuta en ese modo.

No tengo ninguna experiencia con wordpress, así que podría cometer un error aquí. Solo asegúrese de que el jQuery incorporado esté disponible y cargue su script.

function my_script() { 
    if (!is_admin()) { 
     wp_enqueue_script('custom_script', get_bloginfo('template_url').'/js/myScript.js', array('jquery')); 
    } 
    if(is_admin()){ 
     wp_enqueue_script('custom_admin_script', get_bloginfo('template_url').'/js/admin_script.js', array('jquery')); 
    } 
} 

Cambiar los admin_script.js a utilizar jQuery lugar $.

jQuery(document).ready(function(){ 
    alert("Hello"); 
}); 

Ver si eso funciona para usted. Si desea utilizar $, probablemente pueda escribir var $ = jQuery; en la parte superior de su admin_script.js.

+1

Gracias que funciona. De hecho, lo intenté antes pero tuve un error tipográfico antes ... – drav

+2

jQuery en realidad se pasa a sí mismo como el primer argumento de la función que llama, por lo que puede escribir 'jQuery (document) .ready (function ($) {$ ('# blah '). click();}); 'etc. O, por supuesto, solo' jQuery (function ($) {$ (' # blah '). click();}); '. – alnorth29

+0

Esta solución no funciona. –

7

Puede hacer como esto

<?php add_action('admin_enqueue_scripts', 'function_name'); ?> 

Esto puede ser usado como esto

<?php add_action('admin_enqueue_scripts', 'load_custom_script'); ?> 
function load_custom_script() { 
    wp_enqueue_script('custom_js_script', get_bloginfo('template_url').'/js/custom-script.js', array('jquery')); 
} 

Para obtener más ayuda, consulta la documentación here

+0

¡Esta solución funciona mejor que la anterior! –

Cuestiones relacionadas