web-dev-qa-db-fra.com

Thèmes spécifiques à la catégorie?

Mon client souhaite mettre en place une apparence spéciale pour chacune des pages de notre catégorie. Un peu comme des thèmes pour enfants ... elle souhaite déplacer l’image d’arrière-plan, modifier quelques graphiques et ajuster les couleurs en fonction de la catégorie visitée par l’utilisateur (horreur, romance, etc.).

Y a-t-il un moyen raisonnable de faire cela en plus de créer un modèle différent pour chaque page avec des styles CSS importés? Ou est-ce vraiment le seul moyen d'y parvenir?

UPDATE: Les réponses ci-dessous sont toutes excellentes. Pour nous, le plus simple était d’utiliser les classes spécifiques à une catégorie fournies par "body_class ()" pour remplacer les styles actuels.

Merci!

1
Garrett

Si les modifications ne nécessitent pas de modifications du balisage HTML, vous pouvez le faire en chargeant conditionnellement des fichiers de style CSS supplémentaires. Voir Balises conditionnelles> Une page de catégorie et wp_enqueue_style() dans le Codex.

1
Rarst

La majeure partie de votre thème est composée de trois fichiers, header.php , footer.php et style.css .

Si vous souhaitez charger un en-tête, un pied de page et/ou une feuille de style alternatifs, mettez simplement à jour les appels appropriés dans le modèle de catégorie ( category.php ) pour extraire un autre en-tête/pied de page/feuille de style. .

Exemple.

get_header();

Devient.

get_header( 'cat' );

Inclurait alors header-cat.php au lieu de header.php .
Vous pouvez faire de même avec l'appel get_footer() pour inclure un fichier de pied de page différent.

L'utilisation de fichiers d'en-tête/pied de page différents est décrite dans les pages Codex.
http://codex.wordpress.org/Function_Reference/get_header
http://codex.wordpress.org/Function_Reference/get_footer

Pour la feuille de style, changez simplement ceci (dans votre nouveau fichier d’en-tête).

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />

Pour quelque chose comme ..

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_directory' ); ?>/style2.css" />

Ou bien, utilisez wp_enqueue_style comme suggéré dans l'autre réponse.

HTML et CSS entièrement personnalisés sans effectuer aucun autre type de page (et aucune modification nécessaire de l'en-tête/du pied de page/de la feuille de style existante).

0
t31os