web-dev-qa-db-fra.com

functions.php Comment ajouter css/js en fonction du nom du modèle?

Comment ajouter des fichiers CSS et JS personnalisés en fonction du nom du modèle? Par exemple, mes pages normales auront toutes une couleur de fond verte. Maintenant, je veux que Blue Template aura une couleur de fond bleue avec un fichier CSS supplémentaire. Comment puis je faire ça?

Blue.php

<?php
/*
  Template Name: Blue Template
*/
?>
<?php get_header(); ?>
<div class="container">
  <h1>This template has an blue background!</h1>
</div>
<?php get_footer(); ?>

functions.php

<?php
  function load_theme_files() {
    # Green background - Default Stylesheet, all pages need this one
    wp_enqueue_style('style', esc_url( get_stylesheet_directory_uri() ).'/style.css');  

    # What I need - This should add blue.css to the header
    if ($currentTemplate == 'Blue Template') {
      wp_enqueue_style('blue', esc_url( get_stylesheet_directory_uri() ).'/blue.css');
    }
}
add_action('init', 'load_theme_files');
?>

Cela devrait donner toutes les pages normales <link href="/style.css" rel="stylesheet" type="text/css". et mon modèle bleu aura blue.css en dessous de mon style.css normal.

J'ai essayé if ( is_page_template( 'blue.php' ) ) { # HERE THE BLUE CSS } mais cela ne fait rien.

1
Jeff

Vous pouvez utiliser wp_enqueue_style() avant d'exécuter get_header() dans votre fichier blue.php.

Si vous cherchez un moyen de faire cela dans votre fichier functions.php, le hook init est un peu trop tôt pour is_page_template(). Essayez le hook wp_enqueue_scripts à la place:

add_action( 'wp_enqueue_scripts', 'load_my_theme_files' );
function load_my_theme_files() {
    if ( is_page_template( 'blue.php' ) ) {
        wp_enqueue_style( ... );
    }
}

J'espère que cela pourra aider!

1
kovshenin