web-dev-qa-db-fra.com

Comment charger des scripts de bibliothèque dans admin à partir de plugins dans le wrapper noConflict?

Pour mon plugin, je dois créer une boîte à méta pour certains champs personnalisés de mon CPT (xyz), et pour organiser les champs, je dois implémenter des onglets. Et j’ai appris à charger jQuery/JavaScripts en utilisant wp_enqueue_script(), c’est pourquoi, dans mon plugin, j’ai entré ce qui suit (avec la suggestion de Chip Bennett , j’ai exclu wp_register_script() et utilisé uniquement les fonctions wp_enqueue_script() et évitées désenregistrant les scripts intégrés):

function my_scripts() {    

    wp_enqueue_script( 'jquery-lib-scripts', plugins_url( '/js/jquery-1.10.2.min.js', __FILE__ ) );
    wp_enqueue_script( 'jquery-ui-for-tabs', plugins_url( '/js/jquery-ui.js', __FILE__ ) );
    //wp_enqueue_script( 'plugin-scripts', plugins_url( '/js/plugin-scripts.js', __FILE__ ) );

    wp_enqueue_style( 'plugin-style', plugins_url( 'plugin-style.css', __FILE__ ) );

}

add_action('admin_enqueue_scripts', 'my_scripts');

Ainsi, les fichiers se chargent globalement dans le panneau d'administration.

Tout va bien, même si je suis parfaitement au courant des WP scripts d'administration intégrés jquery, jquery-ui-core et jquery-ui-tabs. Mais d’une manière ou d’une autre, mes scripts ne sont pas en conflit et fonctionnent avec mes onglets dans la page post-new.php (Ajout) de mon CPT; mais est en train de casser les onglets dans post.php (écran d'édition de CPT xyz).

Je travaille sur mon dev. environment localhost utilisant WAMP et WP 3.9.1, alors que je tentais de désactiver tous les autres plug-ins, puis de passer au thème T14 par défaut.

Je viens de constater que, avec mon code, les onglets fonctionnent dans toutes les pages, mais si j'active un autre plug-in, même Akismet, c'est EN CONFLIT. J'ai entendu parler des wrappers noConflict , mais je suppose qu'ils ne concernent que les scripts personnalisés, mais , comment puis-je mettre en file d'attente les scripts de bibliothèque pour mon plugin dans un wrapper noConflict?

1
Mayeenul Islam

En réalité, je ne réponds PAS à la question. Je précise ici comment j'ai obtenu ma solution sans suivre ce cours:

Tout d'abord, j'ai eu la solution initiale au problème de mise en file d'attente de réponse WPSE . Cela fonctionne comme un charme. Mais le problème de conflit est réapparu lorsque j'ai essayé d'incorporer le contenu multimédia téléchargé dans un champ avec wp_enqueue_media(). Cela ne fonctionne pas, même dans cette page, le programme de téléchargement de l'image sélectionnée fonctionnait.

J'ai essayé de désactiver tous mes plugins et de revenir à TwentyFourteen avec define('SCRIPT_DEBUG', true). Et avec la suggestion de @ G.M. J'ai essayé le code suivant fourni par lui:

function header_sent() { headers_sent() && die('Sent!'); }
add_action( 'init', 'header_sent' );

pour vérifier si un en-tête est déjà envoyé, mais j'ai le signal vert. Ensuite, avec plusieurs tentatives et le commentaire de @ Rup, j'ai mis en file d'attente toutes les dernières informations relatives à jQuery (jQ 1.11.1 et jQUI 1.10.4). Mais le problème réside toujours. Mais avec ces efforts, j'ai au moins trouvé l'espoir que mon plugin ne soit pas en conflit avec Akismet.

J'ai réorganisé la wp_enqueue_media() avec cette SO réponse . Mais quand j’ai activé WordPress SEO, bien que mon plugin jQuery fonctionne, mais le WP SEO. C'est donc un conflit évident avec le référencement WordPress.

Ensuite, j'ai changé la priorité de la boîte à méta de 'high' à 'low' $ mdash; rien ne s'est passé. Ils ont quelque chose cliqué dans mon esprit, et j'ai utilisé mes scripts in_footer avec:

wp_enqueue_script( 'jquery-lib-scripts', plugins_url( '/js/jquery-1.11.1.min.js', __FILE__ ), '', '', true );
wp_enqueue_script( 'jquery-ui-for-tabs', plugins_url( '/js/jquery-ui-1.10.4.min.js', __FILE__ ), '', '', true );

Cela a résolu mon problème ici.
(Mais je ne sais pas si les scripts entreront en conflit avec un autre plugin à l'avenir, que ferais-je alors :()

0
Mayeenul Islam