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?
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
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 );