web-dev-qa-db-fra.com

Comment charger des scripts et des styles personnalisés pour une page?

Les différentes pages nécessitent souvent un ensemble de scripts et de styles différents.

J'utilise functions.php et construction comme ceci pour charger des scripts et des styles:

function load_assets() {
   wp_enqueue_style( 'styles', get_template_directory_uri() . '/css/styles.css');
   wp_enqueue_script('main-js', get_template_directory_uri() . '/js/main.js');
}
add_action( 'wp_enqueue_scripts', 'load_assets' );

Je sais que je peux mettre une condition ici comme ceci:

is_page()

mais y a-t-il une meilleure façon?

Suggestion:

Peut-on utiliser wp_register_script () pour cibler des pages spécifiques?

1
Boykodev

Oui, vous pouvez ajouter des balises conditionnelles à l'action wp_enqueue_scripts. Voir les exemples ci-dessous:

function load_assets() {
   wp_enqueue_style( 'styles', get_template_directory_uri() . '/css/styles.css');

   // loads on any 'page' post type
   if( is_page() ){
       wp_enqueue_script('main-js', get_template_directory_uri() . '/js/main.js');
   }

   // only loads on the page with a slug of 'home'
   if( is_page('home') ){
       wp_enqueue_script('home-js', get_template_directory_uri() . '/js/home.js');
   }


}
add_action( 'wp_enqueue_scripts', 'load_assets' );

Pour d'autres exemples d'utilisation de is_page(), voir la page du codex: https://codex.wordpress.org/Function_Reference/is_page

3
sxalexander

Pour l'administrateur, vous pouvez le faire de cette manière.

function load_assets( $hook ) {

    global $post;

    if ( $hook == 'post-new.php' || $hook == 'post.php' ) {
        // enqueue here
    }
}
add_action( 'admin_enqueue_scripts', 'load_assets', 10, 1 );
1
Aftab