J'ai vu des questions qui se ressemblent, mais elles ont toutes abouti à plusieurs sites . Pour la maintenabilité, les performances et la sécurité, je ne veux pas utiliser le multisite. Restez avec moi.
Voici à quoi je pense:
.
|_____branch1 // for branch1.domain.com
| |_____themes
| |_____plugins
|
|_____branch2 // for branch2.domain.com
| |_____themes
| |_____plugins
|
|_____branch3 // for branch3.domain.com
| |_____themes
| |_____plugins
|
|_____index.php
|_____WordPress
|_____wp-config.php
Comme vous pouvez le voir, chaque domaine possède sa propre base de données et son propre répertoire de contenu, mais une seule instance WordPress. Désormais, les thèmes, plugins et bases de données deviennent plus petits et indépendants. Il serait alors beaucoup plus facile de maintenir, de mettre à l'échelle ...
Mais est-ce possible? Si vous avez déjà rencontré le même problème, merci de partager vos impressions! J'apprécie vraiment votre aide.
customization
multisite
SarahCoding
la source
la source
Réponses:
Comme l'a dit @ tom-j-nowell dans un commentaire à OP, le multisite peut faciliter cela.
Les performances et la sécurité ne sont pas vraiment un problème pour le multisite (du moins pas plus que pour les installations régulières), mais je suis d'accord que le multisite peut parfois être un problème, car de nombreux plugins (personnalisés ou tiers) peuvent ne pas fonctionner correctement sur plusieurs sites, ou peut-être parce que vous souhaitez garder les utilisateurs de différents sites Web complètement séparés.
Cela dit, ce que vous voulez réaliser n'est pas si difficile.
Ce que vous devez changer entre l'installation est:
Ces configurations peuvent être faites en utilisant des constantes dans
wp-config.php
votre seul problème est de savoir comment les changer en fonction de l'URL.La variable serveur
'SERVER_NAME'
devrait fonctionner pour vous, au moins si votre serveur Web est correctement configuré.Par exemple, vous pouvez créer un dossier nommé
/conf
au même niveau dewp-config.php
fichier et de/WordPress
dossier.Dans ce dossier, vous pouvez ajouter des fichiers:
branch1.domain.com.conf
branch2.domain.com.conf
branch3.domain.com.conf
à l'intérieur de chacun d'eux, vous pouvez faire quelque chose comme
Cela changera sur chaque fichier de configuration en fonction de la "branche".
Après cela, dans votre unique,
wp-config.php
vous pouvez donc quelque chose comme:Ce qui se passe ci-dessus est que, sur la base du nom du serveur, vous chargez un fichier de configuration différent (s'il est trouvé) et si le fichier de configuration ne définit aucune configuration par défaut (ou si le fichier n'est pas trouvé), la configuration est définie par défaut.
Une bonne chose est que pour ajouter une nouvelle branche, il vous suffit de créer le dossier de la branche et de fournir un
.conf
nom d'après le nouveau domaine de la branche, et vous avez terminé, il n'y a rien à changer du côté de WP.La ligne:
c'est là que j'obtiens le nom de domaine. Comme première option, j'utilise une variable d'environnement, car il y a des chances que
$_SERVER['SERVER_NAME']
cela ne fonctionne pas sur un contexte de ligne de commande, comme nous lors de l'utilisation de WP CLI. Dans ces situations, vous pouvez définir une variable d'environnement pour forcer WP à utiliser les paramètres d'une branche spécifique.Notez que dans les fichiers de configuration spécifiques à une branche, je modifie le
WP_CONTENT_DIR
et qui définira automatiquement le dossier plugins et thèmes dans les sous-dossiers liés/plugins
et de/themes
branche.Un problème possible ici est si vous souhaitez partager le
/uploads
dossier (où les fichiers sont téléchargés).Par défaut, ce dossier est un sous-dossier du répertoire de contenu, donc en utilisant le flux de travail ci-dessus, ce sera un
/uploads
sous-dossier de chaque dossier racine de branche.Si ce n'est pas un problème pour vous, allez-y, sinon la solution la plus simple serait de créer
/uploads
dans chaque dossier de branche un lien symbolique vers le vrai dossier de téléchargement que vous souhaitez partager.la source
$_SERVER['SERVER_NAME']
n'est pas fiable ./uploads
dir n'est pas un problème. J'ai également testé avec WP CLI, si nous passons en--url
paramètre pour chaque site, cela fonctionne normalement :)server_name
dans nginx ouServerName
dans Apache ou tout ce qui convient à votre serveur Web,$_SERVER['SERVER_NAME']
cela fonctionnera. Même si WP CLI peut fonctionner à l'aide de--url
paramètres, d'autres outils de ligne de commande peuvent avoir des problèmes si vous n'utilisez pas la variable d'environnement. WP CLI "se moque" de l'URL de la demande dans un contexte CLI, d'autres commandes ne le feront probablement pas.SERVER_NAME
c'est bien configuré. À propos de vars env, j'ai utilisé phpdotenv pour le corriger. Actuellement, tout semble bien fonctionner :)Cela est possible avec un lien symbolique et un peu de planification. J'ai fait un peu de récurage sur le net pour la même chose. Enfin, rassemblez toutes les choses et faites-les fonctionner.
J'ai couru quelques sites Web, ils partagent tous le même dossier de thèmes et de plugins. Les mêmes dossiers fonctionnent pour les sites multisites et uniques. Mais vous devez faire attention à certains plugins qui ne peuvent être que multi / site unique et être excentriques.
J'ai créé un répertoire comme master-tnp / themes et master-tnp / plugins. Créez ensuite un lien symbolique vers votre répertoire wordpress à l'aide de la commande ln -s.
Les pièges se trouvent également dans les configurations de serveur. Assurez-vous que la directive de suivi des liens symboliques est définie sur autoriser.
Si vous souhaitez utiliser une installation WordPress unique, j'ai mis en place un guide détaillé sur la façon dont je l'ai fait sur https://vaish.co/multiple-sites-single-wordpress-directory
la source