web-dev-qa-db-fra.com

Comment charger les scripts et les CSS pour les administrateurs uniquement lors de la modification ou de l'ajout de publications

J'ai un plugin qui permettra aux administrateurs d'effectuer certaines actions lors de l'ajout ou de la modification d'un article. J'utilise une feuille de style et un code javascript pour ce plugin que je souhaite inclure uniquement lors de l'ajout ou de la modification d'un message. Ai-je raison d'utiliser les crochets d'action suivants?

add_action('load-post.php', 'call_my_function');
add_action('load-post-new.php', 'call_my_function');

A l'intérieur de la fonction call_mon_fonction, j'ai:

function call_my_function() {
  $plugin_directory = "/wp-content/plugins/".dirname(plugin_basename(__FILE__));
  $jssrc = $plugin_directory.'/js/my_plugin.js';
  wp_enqueue_script("my_plugin_js", $jssrc);
  $csssrc = $plugin_directory.'/css/my_plugin.css';
  wp_enqueue_style("my_plugin_css", $csssrc);
}

Le code ci-dessus charge avec succès les fichiers CSS et Javascript s’il n’est pas appelé à partir du hook add_action. Cela ne fonctionne pas correctement lorsqu'il est appelé à partir de ces points d'ancrage.

3
ChiCgi

vous voulez utiliser admin_print_scripts-(page_hook) et admin_print_styles-(page_hook), donc dans votre cas:

add_action('admin_print_scripts-post.php', 'call_my_function');
add_action('admin_print_scripts-post-new.php', 'call_my_function');

add_action('admin_print_styles-post.php', 'call_my_styles_function');
add_action('admin_print_styles-post-new.php', 'call_my_styles_function');
5
Milo

Cela ne fonctionne pas correctement lorsqu'il est appelé à partir de ces points d'ancrage.

Je vous suggère de vérifier la source de la page, ces crochets fonctionnent parfaitement pour les mises en file d'attente. J'ai copié votre code pour vérifier quand même, et je vois à la fois la feuille de style et le script mis en file d'attente lors de l'utilisation des points d'ancrage.

La façon dont vous chargez les files d’attente semble fausse, cependant, je suggérerais ce qui suit.

function call_my_function() {
    wp_enqueue_script("my_plugin_js", plugins_url( '/js/my_plugin.js', __FILE__ ) );
    wp_enqueue_style("my_plugin_css", plugins_url( '/css/my_plugin.css', __FILE__ ) );
}
0
t31os

celui-ci fonctionne pour moi, y compris les scripts sur une page customsubmenu:

add_action('admin_menu', 'register_my_custom_submenu_pages');

function register_my_custom_submenu_pages() {

    $email_menu = add_submenu_page( 'edit.php?post_type=events', 'Email Users', 'Email Users', 'edit_others_posts', 'email', 'email_callback' ); 

    add_action( 'admin_print_styles-' . $email_menu, 'email_custom_css' );
    add_action( 'admin_print_scripts-' . $email_menu, 'email_custom_js' );  

}

function email_callback() {

    echo '<div class="wrap">';
        echo '<h2>'.get_admin_page_title().'</h2>';
        include get_stylesheet_directory() . '/admin/email.php';
    echo '</div>';

}

function email_custom_css()
{ 
    wp_enqueue_style( 'chosen',get_stylesheet_directory_uri().'/js/chosen/chosen.min.css' ); 
}; 

function email_custom_js()
{ 
    wp_enqueue_script( 'chosen', get_stylesheet_directory_uri().'/js/chosen/chosen.jquery.min.js', array('jquery')); 
};

sténographie cela pourrait traduire pour vous à:

add_action( 'admin_print_styles-post.php', 'custom_css_load' );
add_action( 'admin_print_styles-post-new.php', 'custom_css_load' );

add_action( 'admin_print_scripts-post.php', 'custom_js_load' ); 
add_action( 'admin_print_scripts-post-new.php', 'custom_js_load' ); 

function custom_css_load()
{ 
    wp_enqueue_style( 'my_styles', plugins_url( '/css/my_plugin.css', __FILE__ ) ); 
}; 

function custom_js_load()
{ 
    wp_enqueue_script( 'my_scripts', plugins_url( '/js/my_plugin.js', __FILE__ ), array('jquery')); 
};

N'oubliez pas de charger après jQuery si votre code js en dépend.

Je ne teste pas cela, alors fais-le comme tu veux :)

0
Jonathan Joosten