Bonjour les utilisateurs de wordpress,
Je suis coincé avec un problème lors de l'exécution de 2 plugins Wordpress fabriqués par nos soins. Je vais utiliser le code suivant:
define('PLUGIN_URL', plugin_dir_url( __FILE__ ));
add_action( 'admin_enqueue_scripts', 'plugin_load_js_and_css' );
function plugin_load_js_and_css() {
wp_register_style( 'plugin.css', PLUGIN_URL . 'plugin.css', array());
wp_enqueue_style( 'plugin.css');
wp_register_script( 'plugin.js', PLUGIN_URL . 'plugin.js', array('jquery'));
wp_enqueue_script( 'plugin.js' );
}
}
Mais c'est charger cette feuille de style partout dans le panneau d'administration. Maintenant, j'ai trouvé ceci dans le codex:
function my_enqueue($hook) {
if( 'edit.php' != $hook )
return;
wp_enqueue_script( 'my_custom_script', plugins_url('/myscript.js', __FILE__) );
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );
Mais ce code ne fonctionne pas pour mon .. Quelqu'un at-il une autre option? Ou peut-être savoir pourquoi ça ne marche pas pour moi?
Lorsque vous enregistrez une page d’option de plug-in, vous obtenez un accrochage de la fonction d’enregistrement:
$hook = add_menu_page(
'T5 Demo', // page title
'T5 Demo', // menu title
'manage_options', // capability
't5-demo', // menu slug
'my_render_page' // callback function
);
Utilisez ce crochet pour mettre en file d'attente les scripts et les styles:
add_action( "admin_print_styles-$hook", "my_enqueue_style" );
add_action( "admin_print_scripts-$hook", "my_enqueue_script" );
Voir mon plugin T5 Admin Menu Demo pour un exemple.
Ne définissez pas une constante PLUGIN_URL
. Vous rencontrerez des collisions avec d'autres codes.
Après des recherches approfondies, @fuxia a la meilleure réponse, même lorsque vous utilisez Redux Framework pour un menu administrateur. Lorsque vous utilisez Redux, $hook
sera toplevel_page_
concaténé avec la valeur que vous avez entrée dans page_slug
dans le fichier options-init.php
.
Par exemple:
$opt_name = my_option
'page_slug' => $opt_name.'_settings'
add_action( "admin_print_styles-**toplevel_page_my_option_settings**", "my_enqueue_style" );
add_action( "admin_print_scripts-**toplevel_page_my_option_settings**", "my_enqueue_script" );
De plus, si vous ne vous souvenez pas de ce que vous avez défini pour my_option, ouvrez simplement votre panneau d’administration Redux et consultez l’URL:
yoursite/wp-admin/admin.php?page=**my_option_settings**&tab=1