web-dev-qa-db-fra.com

Modification de la feuille de style en fonction des termes de taxonomie personnalisés

Mon client souhaite que les couleurs d'arrière-plan et d'en-tête changent en fonction des termes de la taxonomie personnalisée "Niveaux". Ces termes sont maternelle, première année, deuxième année, etc. (tous jusqu'à la douzième année) et sont associés à un type de poste personnalisé, "projets".

J'ai configuré le menu de manière à ce que chaque terme de "notes" ait sa propre page. Ce ne sont pas des pages réelles que vous trouverez dans le tableau de bord. Ces pages ne sont que des pages de type archive spécifiques à chaque classe.

J'ai trouvé un article de blog intéressant sur la modification contextuelle de la feuille de style en fonction du nom de la page ( http://justintadlock.com/archives/2009/07/27/contextually-changing-your-themes-stylesheet ). Ma compréhension php est un peu limitée et je n'arrive pas à comprendre comment éditer ce code de telle sorte qu'au lieu de changer de feuille de style à cause du nom d'une page, il est déclenché par un tableau de termes dans la taxonomie personnalisée 'grades.'

Je souhaite permuter les feuilles de style sur les pages d'archives pour les taxonomies personnalisées. Le changement devrait être déclenché par les termes d'une taxonomie personnalisée. IE: La page Kindergarten est en fait une page d'archive pour 'Kindergarten' dans la taxonomie personnalisée 'Grades'. J'ai 13 termes associés à 'Grades'> Kindergarten, première année, deuxième année, troisième année, etc.

IE: je voudrais que l'image de fond et les couleurs de titre changent. Vert pour la maternelle, la première année, la deuxième année, la troisième année ... Orange pour la sixième année, la septième année, la huitième année ... Violet pour la neuvième année, la dixième année, etc ...

J'ai trouvé une solution qui ne fonctionne que pour les pages d'archives et les taxonomies: is_tax .

add_filter( 'stylesheet_uri', 'my_stylesheet', 10, 2 );

function my_stylesheet ($ stylesheet_uri, $ stylesheet_dir_uri) {

if ( is_tax( 'grades', array('term_name' => 'Kindergarten', 'First Grade', 'Second Grade', 'Third Grade', 'Fourth Grade', 'Fifth Grade' ) ))
    $stylesheet_uri = $stylesheet_dir_uri . '/style-elemen.css';
elseif ( is_tax( 'grades', array('term_name' => 'Sixth Grade', 'Seventh Grade', 'Eighth Grade' ) ))
    $stylesheet_uri = $stylesheet_dir_uri . '/style-elemen.css';

return $stylesheet_uri;

}

1
Kathy

Comme Justin Tadlock dit dans votre article référencé , le body_class () fournit la possibilité d'ajouter des classes en fonction du type de terme. Étant donné que vous indiquez que votre connaissance php est toujours en croissance; c'est peut-être la meilleure solution.

Le codex fournit une liste de classes sur un body_class activé:

http://codex.wordpress.org/Function_Reference/body_class

Si cela ne suffit pas, wordpress a une excellente fonction de chargeur de scripts/styles, wp_enqueue_script pour charger des scripts/styles:

<?php 

/** 
* The following would be a good method for controlling style loading
*/  

if (is_category( $category ) ) {  
    wp_enqueue_script('myscript'); 
}

En outre, WPA.SE a zounds d’exemples de wp_enqueue_script et de questions

2
chrisjlee