web-dev-qa-db-fra.com

Comment déplacer le style du fichier de modèle dans la section <head>?

Imaginez la situation suivante:

//header.php contains:
<header id="header">logo and navigation</header>

//my-template.php contains:
<?php get_header(); ?>
     <style type="text/css">#header { display: none; }</style>
     <div class="main-container-of-my-template"></div>
<?php get_footer(); ?>

Cela désactivera <header> pour my-template.php dans les navigateurs les plus modernes (sauf IE9), mais ce n'est pas une solution valide. Existe-t-il un moyen d'utiliser quelque chose comme wp_enqueue_style(); directement dans my-template.php pour que ce style soit chargé dans <head> dans header.php? Juste pour le rendre valide.

Je veux garder ce modulaire, donc je ne veux pas mettre if si énoncé comme ceci dans header.php (ce ne sera plus un modèle de page modulaire autonome):

<?php if(is_page_template( 'my-template.php' )){ ?>
<style type="text/css">#header { display: none; }</style>
<?php } ?>
2
Paul

Qu'en est-il des styles avant la fonction get_header();

<style type="text/css">#header { display: none; }</style>
<?php get_header();?>
<div class="main-container-of-my-template"></div>
<?php get_footer(); ?>

Cependant, ceci n'est pas recommandé car il charge les styles même avant le <html> qui ne se trouve pas dans la section <head> de votre site Web, mais selon vos besoins, cela pourrait être le seul moyen d'ajouter des styles en modifiant votre fichier my-template.php.

Remarque-

La deuxième façon (recommandée) de charger des scripts dans la section <head> sans modifier header.php consiste à utiliser themes functions.php pour mettre en file d'attente les styles dans <head>. Voici le code qui fait le tour -

Assurez-vous de créer un nouveau fichier new-style.css dans le répertoire du modèle avec les styles nécessaires.

<?php   
    function wpse_60052_load_style() { 
        if(is_page_template( 'my-template.php' )) { 
            wp_enqueue_style('mystyle', get_bloginfo('template_directory').'/new-style.css');
        }
} 
add_action( 'wp_enqueue_scripts', 'wpse_60052_load_style' );
?>
2
amit

La première option consiste à utiliser le même modèle is_page_template et à utiliser wp_enqueue_style, qui ajouterait une feuille de style uniquement si ce modèle de page est disponible.

La deuxième option consiste simplement à intégrer ce code à l'en-tête du modèle de page (cela ne sera évidemment pas visible dans d'autres modèles).

1
Mario Peshev