web-dev-qa-db-fra.com

Utiliser la dernière version de WordPress (interface d'administration)

Je souhaite utiliser les dernières versions de jQuery (et de jQuery UI) sur mon interface d'administration (modification d'un type de publication spécifique que j'ai créé).

J'ai essayé ceci:

// jQuery 1.x
wp_register_script('jquery1x', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, null, true);

// jQuery UI 1.8.4 PTBR
wp_register_script('jquery-ui-custom-pt_BR', THEME_URL . 'js/jquery.ui.datepicker-pt-BR.js', array('jquery1x'), null, true);
// jQuery UI 1.8.4  
wp_register_script('jquery-ui-custom', THEME_URL . 'js/jquery-ui-1.8.4.custom.min.js', array('jquery1x', 'jquery-ui-custom-pt_BR'), null, true);

// jQuery UI 1.8.4 CSS 
wp_register_style('jquery-ui-custom-css', THEME_URL . 'css/smoothness/jquery-ui-1.8.4.custom.css');

wp_enqueue_style('jquery-ui-custom-css');
wp_enqueue_script('jquery-ui-custom');

Et cela a fonctionné, mais sur d’autres WP pages d’administration, des erreurs jQuery se sont produites en raison des remplacements de jQuery (car il est chargé deux fois).

Si je "désenregistre" jQuery et que je l'enregistre à nouveau (en utilisant la dernière), cela ne fonctionnera pas.

Ce n'est pas la première fois que je rencontre ce problème ... Tout ce dont j'ai besoin, c'est d'utiliser la dernière version de jQuery sur mon interface d'administration WordPress pour pouvoir utiliser certaines fonctionnalités telles que Datepicker et Colorpicker .. register_script.

Si je l'enregistre avec le nom "jquery", il ne sera pas mis à jour car il y a déjà un jQuery chargé par WordPress sur cette ligne:

<script type='text/javascript' src='http://website.com/wp-admin/load-scripts.php?c=1&amp;load=jquery,utils,nav-menu&amp;ver=2b05c108d9016a4caa470b8edaf40953'></script>

Et je ne peux pas pirater ce fichier load-scripts.php pour changer le nom du fichier car je ne veux pas changer le noyau de WordPress.

2
Thiago Belem

À partir de la version 3.6, WordPress activement déconseille de désenregistrer les scripts "critiques" dans l'administrateur.

Pour la portée posée (chargement de jQuery plus récent dans une partie spécifique de l’administrateur), il serait plus judicieux de charger une copie personnalisée de jQuery normalement et d’utiliser noConflict() tout de suite pour l’isoler dans sa propre variable à utiliser dans le code JS personnalisé.


Ancien et réponse

le désenregistrement ne fonctionne pas pour vous car WP concatène par défaut les scripts de la zone d'administration. Ainsi, lorsque vous effectuez une charge jQuery provenant d’ailleurs, elle tombe en morceaux.

Vous pouvez désactiver la concaténation pour la faire fonctionner (ajoutez des conditions si nécessaire):

add_action( 'admin_init', 'jquery_admin' );

function jquery_admin() {

    global $concatenate_scripts;

    $concatenate_scripts = false;
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', ( 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' ), false, '1.x', true );
}

PS merci beaucoup pour astuce avec le chargement de la dernière version de Google, je ne le savais pas :)

13
Rarst

Si cela fonctionne pour vos pages de type publication personnalisée et que c'est tout ce que vous voulez, vous pouvez simplement mettre une balise conditionnelle vérifiant la page:

if (is_admin() && $_GET['post_type'] == 'custom_post_type') {
  // jQuery replacement
}

Peut-être une meilleure solution serait de jeter un coup d'oeil à ce plugin: http://wordpress.org/extend/plugins/use-google-libraries/ il remplacera les bibliothèques par défaut de WordPress AJAX avec ceux du CDN de Google.

Quelques bonnes choses à ce sujet, étant donné que de nombreux sites utilisent les bibliothèques de Google, ils seront déjà mis en cache, vous n'avez pas à mettre à jour vos bibliothèques manuellement.

1
Evan