web-dev-qa-db-fra.com

thème enfant différent pour le sous-domaine

J'ai un site que j'essaie de comprendre comment appliquer différents thèmes enfants en fonction d'un sous-domaine. Appliquer les thèmes pour enfants ne devrait pas être difficile, mais plutôt la magie .htaccess sur laquelle je suis un peu confus.

Ce que je cherche, c’est un site qui dit:

example.com/red/
example.com/blue/

Où le rouge et le bleu sont des thèmes d'enfants différents. Mais tous les liens sont toujours accessibles en tant que:

example.com/red/blog/
example.com/blue/blog/

Multisite me parait excessif, car les sites auraient exactement le même contenu, avec des feuilles de style différentes et des images différentes. Je pense que peut-être add_rewrite_rule () serait plus approprié pour cette situation. Mais regex est latin pour moi.

2
r0tterz

Je vous encourage à revenir un peu en arrière et à éviter d'utiliser des URL pour déterminer le thème. (Et pour info, ce que vous décrivez est un sous-dossier, pas un sous-domaine qui serait red.exemple.com.)

La raison pour ne pas le faire est d'éviter des problèmes de contenu en double avec les moteurs de recherche. Techniquement, vous pouvez les contourner, mais cela peut également être source de confusion pour les visiteurs qui s'attendent raisonnablement à ce que différentes URL chargent un contenu différent.

Au lieu de cela, je vous encourage à regarder dans un plugin "thème switcher". Je ne connais aucun d'eux, mais en voici quelques-uns:

Si c’était moi, je regarderais attentivement l’utilisation de localstorage pour charger de manière conditionnelle une feuille de style "skin" spécifique qui ne comprend que les modifications de couleur que vous semblez avoir. vouloir.

1
mrwweb

Je suis d'accord avec mrwweb sur le contenu en double, je ne sais pas trop pourquoi vous voulez le faire, mais, par souci d'argumentation ...

Vous pouvez éventuellement récupérer l'URL, puis mettre en file d'attente la feuille de style appropriée à partir de votre fichier functions.php.

Quelque chose comme ça (non testé):

<?php
    function mytheme_stylesheet_enqueue(){        
        global $post;
        $my_url = get_page_link($post->ID);
        if (strpos($my_url,'red') !== false) {
            wp_register_style( 'red-stylesheet', get_stylesheet_directory_uri() . '/red-style.css', array(), '', 'all' );
            wp_enqueue_style( 'red-stylesheet' );
        }
        if (strpos($my_url,'blue') !== false) {
            wp_register_style( 'blue-stylesheet', get_stylesheet_directory_uri() . '/blue-style.css', array(), '', 'all' );
            wp_enqueue_style( 'blue-stylesheet' );
        }
    }
    mytheme_stylesheet_enqueue();
?>
0
Rob