Lorsque vous démarrez avec une nouvelle installation réseau, la première étape est une installation de site unique qui a une ligne supplémentaire dans le wp-config.php
fichier:
define( 'WP_ALLOW_MULTISITE', true );
Après cela, nous devons aller à Tools > Network Setup
, entrer quelques détails comme le nom du réseau et le courrier électronique du super administrateur et enfin appuyer sur le bouton pour exécuter la configuration.
La prochaine étape, le pop-up est en fait deux étapes:
Ajoutez des constantes supplémentaires à votre
wp-config.php
fichierdefine( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', 'example.com' ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );
- Ajoutez des règles à votre
.htaccess
fichier.
Comme je ne fais pas d'installation sur un seul site (plus aucune raison pour cela), j'aimerais ajouter ces constantes dynamiquement à mon wp-config.php
fichier:
define( 'WP_ALLOW_MULTISITE', true );
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
{
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', true );
define( 'BLOG_ID_CURRENT_SITE', true );
}
Je n'ai donc pas à aller à wp-config.php
chaque fois et à le modifier à nouveau.
La première chose qui m'est venue à l'esprit était de vérifier la base de données pour la {$wpdb->prefix}sitemeta
table, mais je ne veux pas faire de requête supplémentaire sur chaque charge de site. La deuxième chose à laquelle j'ai pensé était de vérifier si le blogs.dir
existe déjà, mais ce n'est pas le cas.
Question: Comment puis-je indiquer que j'ai déjà franchi la première étape de la configuration du réseau de manière à ne pas avoir de surcharge importante ou à diminuer les performances.
wp-config
générateur Grunt .Réponses:
Je n'ai pas testé cela, mais si vous avez besoin de trouver une telle solution, j'essaierais probablement de le faire de la manière suivante en ajoutant un script dans la
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
condition que vous avez décrite ci-dessus, ce serait:{$wpdb->prefix}sitemeta
table;wp-config.php
-> retourner vrai.Le travail cron WP réécrirait le
wp-config.php
pour éliminer complètement la vérification.De cette façon, vous n'avez qu'une demande de base de données supplémentaire jusqu'à ce que le réseau soit configuré et que le travail cron fasse sa magie.
Notez bien que cela en vaut la peine, cependant ...;)
la source
wp-config.php
fichier directement, mais je suppose qu'il serait verrouillé à ce point ...Inspecter
wp-admin/network.php
etwp-admin/includes/schema.php
classer. Vous pouvez créer une condition basée sur WP_INSTALLING_NETWORKMettre à jour:
la source
wp-load.php
arrivewp-config.php
plus tôt, doncWP_INSTALLING_NETWORK
ne sera pas défini. Mais même s'il était disponible, il n'est disponible que lors de la configuration du réseau. Que dois-je faire pour laisser les constantes une fois l'installation terminée?index.php
tire./wp-blog-header.php
), qui tire ensuitewp-load.php
et à partir de làwp-config.php
est appelé. Un aperçu peut être trouvé ici .admin.php
lui-même est appelé avantsetup.php
etnetwork.php
(et s'appellewp-load.php
lui - même au début), donc config est déjà en cours d'exécution.WP_INSTALLING_NETWORK
obtientdefine()
sans vérifier si c'est déjà faitdefined()
, je créerais unFatal Error
là-bas. Veuillez me prouver le contraire et lui donner un test. :)wp-config.php
fichier accessible en écriture est un risque pour la sécurité. Considérez que vous avez là tous les détails importants. Je vous ai montré qu'il n'y avait aucun moyen que cela fonctionne (sans avoir un fichier de configuration accessible en écriture). Ce que je recherche, c'est un indicateur (qui ne ralentit pas le système) que je peux vérifier et utiliser comme commutateur. Tout le reste ne fonctionnera pas.Si votre configuration est la même à chaque fois (installation de sous-domaine), vous pourrez peut-être coller le morceau entier dans votre première étape:
define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', $_SERVER[ 'HTTP_HOST' ] ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );
la source
DOMAIN_CURRENT_SITE
constante correcte que WordPress vous donne après avoir terminé la configuration interne.