web-dev-qa-db-fra.com

Chargement de scripts avec wp_register_script et wp_enqueue_script

Comment pourrais-je inclure le script et la feuille de style suivants dans un plugin wordpress s’ils n’ont qu’à charger dans le panneau d’administration?

<script type="text/javascript" src="/wp-includes/js/jquery/jquery.js?ver=1.11.3"></script>
<link rel="stylesheet" type="text/css" href="assets/chosen.min.css">
<script type="text/javascript" src="assets/chosen.jquery.min.js"></script>
1
j8d

Il y a probablement plusieurs façons de le faire - personnellement, j'utilise les méthodes suivantes pour charger des petits scripts uniquement sur les pages "nouvelles" et "éditées" (sélecteur de date, etc.):

function load_my_admin_scripts( $hook ) {

    if (( $hook == 'post.php' || $hook == 'post-new.php' )) {

    wp_enqueue_script(
        'my-datepicker', // name / handle of the script
        SCRIPTS . 'script.js', // path to the script
        array( 'jquery', 'jquery-ui-datepicker' ), // array of registered handles this script depends on
        '1.0', // script version number (optional)
        true // enqueue the script before </head>
    );

    }

}

add_action( 'admin_enqueue_scripts', 'load_my_admin_scripts' );
1
tillinberlin
function load_admin_script_wpse_217608() {
    $assets_path = plugins_url('assets/', __FILE__);

    wp_enqueue_style('chosen-style', $assets_path . 'chosen.min.css');
    wp_enqueue_script('jquery');
    wp_enqueue_script('chosen-script', $assets_path . 'chosen.jquery.min.js', array(), '1.0.0', true);
}

add_action( 'admin_enqueue_scripts', 'load_admin_script_wpse_217608' );

$assets_path est le chemin d'accès à votre dossier d'actifs.

Edit : ajoute @cale_b pour utiliser plugins_url() afin d'éviter toute confusion et chaînes codées en dur.

1
denis.stoyanov

J'ai d'abord ajouté

function __construct() {
    if( is_admin() ) {
    add_action( 'admin_enqueue_scripts', array( &$this, 'xsmi_load_admin_script' ) );
...

puisque c'est dans une classe.

Et la fonction ...

function xsmi_load_admin_script() {
wp_register_style( 'chosencss', plugins_url( 'assets/chosen.css', __FILE__ ), true, '', 'all' );
wp_register_script( 'chosenjs', plugins_url( 'assets/chosen.jquery.js', __FILE__ ), array( 'jquery' ), '', true );
wp_enqueue_style( 'chosencss' );
wp_enqueue_script( 'chosenjs' );
}

La true à la fin de wp_register_script le charge dans le pied de page. C’est la seule façon pour moi de le faire fonctionner. C'est pour l'aide!

0
j8d