Bonjour,

J'ai créé un theme wordpress et dans le dossier "page-templates" j'ai créé un template (photo.php) pour personnaliser une page de mon site.
En créant ma page j'ai bien indiqué dans les attributs de la page le modèle "photo".
J'ai également créé pour cette page personnalisée une feuille de style nommée photo.css (dans le même dossier).
J'aimerais appeler directement la feuille de style photo.css dans mon template photo.php plutôt que de mettre la mise en page dans les balises <style></style>.
J'ai essayé @import mais ça ne fonctionne pas.

Merci de votre aide. Smiley cligne
Bonjour et bienvenue sur le forum, Andromede21 Smiley smile

Non en fait il faut que tu fasse cela dans header.php, dans la partie <head>…</head> comem pour n'importe quelle feuille de styles CSS.

Pour charger la feuille de styles conditionnellement et uniquement pour les pages utilisant le template de page photo.php, il faut utiliser le marqueur conditionnel is_page_template() avec ton template comme paramètre :

<?php
if ( is_page_template( 'photo.php' ) ) {
    echo '<link rel="stylesheet" … />';
}
?>

> Lien vers la page is_page_template du codex WordPress

Voilà voilà Smiley smile
Modifié par audrasjb (21 Aug 2015 - 15:19)
Malheureusement, «ça ne fonctionne toujours pas» n'est pas un retour de bug sur lequel nous pouvons t'aider. Il faut que tu fasse un retour compréhensible, reproductible, avec tous les éléments possibles (codes, url du site, ce que tu as fait exactement, etc.) pour que nous puissions éventuellement t'aider Smiley ohwell
Mon site est en local - voici la partie head de la page header.php sur laquelle j'ai ajouté le code if (is_page_ template_ .... juste avant la fermeture de </head>
Tous mes fichiers (header, photo.php, photo.css, single...) sont dans le dossier de mon thème.

<?php
/**
 * @package WordPress
 * @subpackage Theme perso
 */
/* PARTIE HEAD DU SITE */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>

<head profile="http://gmpg.org/xfn/11">
	<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

	<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>

	<style type="text/css" media="screen">
		@import url( <?php bloginfo('stylesheet_url'); ?> );

	</style>


	<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />

	<?php wp_get_archives(array('type' => 'monthly', 'format' => 'link')); ?>
	<?php //comments_popup_script(); // off by default ?>
	<?php wp_head(); ?>
<!-- css page photo  -->
<?php
if ( is_page_template( 'photo.php' ) ) {
    echo '<link rel="stylesheet" href="photo.css" />';
}
?>
</head>


Merci
Modifié par Andromede21 (22 Aug 2015 - 17:12)
Aahh, c'est mieux Smiley langue

Tu as tout simplement un problème de chemin.

<?php
if ( is_page_template( 'photo.php' ) ) {
    echo '<link rel="stylesheet" href="' . get_bloginfo('template_url') . '/photo.css" />';
}
?>

Ça c'est si le fichier photo.css est directement dans le dossier de ton thème. S'il se trouve dans un sous-dossier, faut que tu ajoute le nom de ce dossier. Smiley murf
Modifié par audrasjb (22 Aug 2015 - 19:36)
Bonsoir,

Merci pour ton aide même si ta proposition ne m'a pas permis de résoudre mon problème.
En cherchant une énième fois sur le web j'ai trouvé la solution pour celles et ceux que ça intéresse :

<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>chemin du css" type="text/css" media="screen" />


à coller directement en haut dans le template souhaité...

--- Dans mon cas en haut de mon template photo.php


<?php
/**
 * Template Name: photo
 */
 ?>
<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/photo.css" type="text/css" media="screen" />


Voilà ça marche nickel. J'espère que ça aidera beaucoup d'entre vous...

Bonne soirée. Smiley cligne
Modifié par Andromede21 (22 Aug 2015 - 22:36)
Oui mais là, tu as un appel de feuille de style au beau milieu du corps du document HTML généré (entre <body>…</body>) Smiley sweatdrop

edit : je suppose que je suis allé trop loin, je n'avais pas compris que tu voulais juste que «ça marche», et pas avoir une solution optimale. Pas grave Smiley smile
Modifié par audrasjb (23 Aug 2015 - 10:47)
Bonjour,

Non audrasjb, j'ai vérifié grâce au firebug... la balise <link... /> se trouve bien à l'intérieur des balises <head></head> et non dans le <body></body> puisqu'elle est située directement après l'en-tête:

<?php
/**
 * Template Name: photo
 */
 ?>


En tout cas merci pour ton aide, ta piste était très intéressante. Smiley smile