J'ai cherché à configurer une installation réseau WordPress. Tout s'est bien passé jusqu'à ce que j'arrive au point où la disposition de mon domaine souhaitée ne convient pas.
Je voudrais avoir une disposition comme suit:
blog. *. stackexchange.com
ainsi, par exemple, j'aimerais avoir plusieurs sites dans un réseau qui ressemblent à:
blog.wordpress.stackexchange.com
blog.apple.stackexchange.com
blog. $ site.stackexchange.com
Je pense que je pourrais faire fonctionner cela avec des règles de réécriture créatives et une intervention DNS manuelle, mais je préfère avoir une configuration où je peux transférer la création de tout sauf le DNS à quelqu'un d'autre (nous avons déjà un processus pour automatiquement création de tous les sous-domaines nécessaires dans DNS)
D'après mes jeux et mes lectures, WP veut vraiment que les sites soient le domaine de niveau supérieur, donc dans mon exemple ci-dessus, il veut que le blog principal de WP soit sur stackexchange.com et que les blogs du réseau soient sur wordpress.stackexchange.com.
Existe-t-il un moyen d'obtenir l'effet souhaité ou dois-je simplement suivre la voie de blog.stackexchange.com/$site?
Réponses:
Vous pouvez utiliser le plugin Domain Mapper pour cela. L'inconvénient est que vous auriez configuré manuellement chaque sous-blog.
la source
Vous pouvez le faire avec un fichier sunrise.php personnalisé. C'est essentiellement le fonctionnement du plugin de mappage de domaine, mais il met un joli front-end dessus. Pour quelque chose de personnalisé, vous pouvez écrire du PHP simple pour faire essentiellement la même chose.
L'essence du multisite consiste à déterminer le site à desservir. Le plug-in de mappage de domaine le fait en créant une table wp_domain_mapping et en y stockant les informations. Ainsi, lorsqu'il reçoit une demande pour xxx.com, il regarde dans ce tableau et voit que cela correspond à blog_id 123.
Tout d'abord, faites une configuration WordPress et rendez-la multisite. Peu importe où il vit vraiment, car nous allons changer tout cela. Pour plus de simplicité, je le mettrais sur blog.stackexchange.com et en ferais un site de type sous-répertoire (ceux-ci sont plus faciles). Les sous-répertoires créés seraient probablement les limaces. / wordpress, / apple, / quoi que ce soit.
Alors oui, pour commencer, vous le rendez en direct sur blog.stackexchange.com/wordpress. Considérez ceci comme votre environnement de mise en scène. Lorsque vous créez chaque site, vous pouvez y faire des choses jusqu'à ce que vous décidiez d'activer le mappage.
Pour faire le mappage de domaine vous-même, sans le plugin, vous feriez quelque chose comme ceci:
Première étape: ajoutez
define( 'SUNRISE', 'on' );
en haut de votre fichier wp-config.php.Deuxième étape: créez un fichier sunrise.php dans le répertoire wp-content. Mettez
<?php
en haut pour commencer.Troisième étape: dans le fichier sunrise.php, votre logique déterminera le site à charger.
Vous allez baser cela sur la
$_SERVER[ 'HTTP_HOST' ]
variable. La façon exacte de procéder est simple: quelle que soit la manière dont vous le souhaitez. Si vous souhaitez simplement écrire une expression régulière à rechercher'/blog\.(.*)\.stackexchange\.com/'
, puis rechercher ce bit dans la base de données, vous pouvez le faire.Puisque vous utilisez le même slug ici que le "sous-répertoire", vous n'avez pas besoin d'une table séparée. Vous pouvez simplement regarder dans le tableau principal wp_blogs pour trouver le site dont vous avez besoin. Quelque chose de similaire à ceci:
$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );
Une fois que vous avez le $ current_blog, vous avez besoin du code suivant:
Cela prédéfinit les variables globales $ current_blog et $ current_site au lieu de laisser les fonctions MU de WordPress le faire.
Cela suffirait à faire fonctionner le site (après avoir fait pointer votre DNS vers lui et avoir trié les éléments d'hébergement virtuel), cependant la plupart des URL statiques utilisées dans le code HTML pointeraient toujours vers blog.stackexchange.com / wordpress, car c'est là que le site serait vraiment. De plus, la fonction d'URL canonique n'aimerait probablement pas l'URL et vous redirigerait également.
Pour remédier à ces problèmes, vous souhaiterez probablement également prédéfinir plusieurs URL associées au site. Des choses comme WP_SITEURL et WP_HOME. En outre, WP_CONTENT_URL, WP_PLUGIN_URL et WPMU_PLUGIN_URL. Cela devrait couvrir la plupart des cas des URL en cours d'ajustement.
Enfin, vous souhaiterez définir le «COOKIE_DOMAIN». Étant donné que vous souhaitez probablement que les connexions soient partagées sur l'ensemble de la chose, vous pouvez le définir sur stackexchange.com, ou même plus si vous ne souhaitez pas qu'elles soient partagées.
Si vous voulez parler de l'intégration du système de connexion stackexchange normal dans WordPress, je peux également répondre à des questions à ce sujet, mais ce serait un peu plus détaillé d'une réponse. :)
N'hésitez pas à m'envoyer un e-mail si vous souhaitez plus d'aide à ce sujet. Heureux d'aider: otto sur wordpress.org.
la source