Avant de commencer, je tiens à reconnaître qu'il existe de très bons articles qui visent à mettre en file d'attente conditionnelle des scripts en fonction du contenu de la page / publication.
- Développement de plugins WordPress - Comment inclure CSS et JavaScript conditionnellement et uniquement lorsque les publications en ont besoin
- Comment charger JavaScript comme un maître WordPress
Ce sont excellents, mais ils sont beaucoup plus avancés que ce que je veux faire.
J'ai l'impression que la réponse utilise la is_page()
fonction intégrée ( codex ), mais lorsque j'essaie de l'utiliser, le site tombe en panne ou ne fonctionne tout simplement pas.
Je pense que j'exécute simplement la logique conditionnelle au mauvais endroit.
Voici ce que j'ai essayé d'ajouter à mes fonctions.php:
function wpse39130_register_more_stylesheets() {
wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' );
}
add_action( 'init', 'wpse39130_register_more_stylesheets' );
function wpse39130_conditionally_enqueue_my_stylesheet() {
// only enqueue on product-services page slug
if ( is_page( 'products-services' ) ) {
wp_enqueue_style( 'stylesheet_name' );
}
}
add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );
Lorsque j'en supprime la partie conditionnelle, la feuille de style est correctement mise en file d'attente, donc je sais que cela fonctionne.
css
conditional-content
wp-enqueue-style
Evan Mattson
la source
la source
Réponses:
J'ai copié votre code dans mon environnement de développement, je n'ai changé que le nom de la page, et cela fonctionne très bien. Êtes-vous sûr qu'il n'est pas mis en file d'attente et que vous l'avez simplement pointé mal ou que la page n'est pas nommée incorrectement ou quelque chose?
la source
Ce que vous avez raison est juste - vous le raccordez simplement à la mauvaise action. Essayez l'action "wp" au lieu de "init". Lorsque init s'exécute, is_page () ne fonctionne pas encore correctement.
EDIT: je me trompe. Je pensais que vous aviez ajouté add_my_stylesheet à init, mais ce n'est pas le cas. is_page devrait fonctionner à partir de l'action enqueue_scripts. Désolé ... continue ...
la source
J'essayais de suivre le même code et de voir si je pouvais obtenir le même résultat, ce que j'ai remarqué is_page () ne fonctionne pas comme prévu. J'ai donc suivi la variable globale $ post et vérifié le nom de la catégorie / slug et ce dernier utilise un texte simple comparer pour décider de l'action.
La valeur de la catégorie si sa seule catégorie (pas une sous-catégorie) serait
Pour la sous-catégorie, vous aurez la variable suivante remplie
Maintenant, en fonction de vos besoins, utilisez le code ci-dessous, comme j'utilise pour vérifier le nom de la sous-catégorie:
Code complet:
Exemple: * Pas de CSS supplémentaire http://whatsq.com/category/gst16/
* CSS supplémentaire avec arrière-plan de la catégorie ci-dessus uniquement http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- et plus/
la source