web-dev-qa-db-fra.com

Sélection par thème d'un thème basé sur une URL

J'ai hérité d'un site doté d'une version mobile. Appelons cela qqq.com. Il y a un serveur Varnish devant pour mettre en cache les pages. Mais il semble que le serveur Varnish détecte également les requêtes mobiles et modifie l'URL en m.qqq.com.

L'installation WP passe ensuite au thème qqq-mobile au lieu du thème qqq.

Comment feriez-vous cela? J'essaie de localiser le code qui fait cela pour que je puisse faire la même chose sur mon instance de dev locale.

Merci de votre aide.

1
NotoriousWebmaster

Le thème activé est stocké dans la table options: template est le thème parent, stylesheet est le thème enfant. S'il n'y a pas de thème enfant, les deux valeurs seront les mêmes.

Le nom d'hôte actuel (URL sans protocole ni chemin) est disponible dans la variable $_SERVER.

Vous pouvez ensuite vous connecter aux filtres stylesheet et template pour forcer un thème différent.

function use_mobile_theme( $current_theme ) {
    // If the domain is m.qqq.com and the current theme is 'qqq'
    if ( 'm.qqq.com' === $_SERVER['HTTP_Host'] && 'qqq' === $current_theme ) {
        // Use the 'qqq-mobile' theme instead
        return 'qqq-mobile';
    } else {
        // Otherwise, keep the current theme
        return $current_theme;
    }
}

add_filter( 'stylesheet', 'use_mobile_theme' );
add_filter( 'template', 'use_mobile_theme' );

Si qqq-mobile est un thème enfant , supprimez la ligne add_filter( 'template', ....

4
shea