web-dev-qa-db-fra.com

Comment détecteriez-vous si WordPress est installé dans un sous-répertoire (pas root)?

Je veux vérifier si une installation WordPress fonctionne à partir d'un sous-répertoire.

Les méthodes courantes pour y parvenir sont énumérées ici: https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory

ceux-ci impliquent généralement de changer un fichier d'index et d'exiger le fichier principal WordPress à partir de là, peut-être de changer les règles dans htaccess si vous utilisez Apache - il n'y a pas de configuration de constantes d'après ce que je peux voir

oui, comment détecter de manière fiable si WordPress ne s'exécute pas à partir d'une racine de répertoire?

2
unfulvio

Vous devez vérifier si le siteurl diffère de l'URL de la maison:

if ( get_option( 'siteurl' ) !== get_option( 'home' ) ) { // whatever

Cela fonctionne également si home est un sous-répertoire de la racine, avec WordPress installé dans un autre sous-répertoire. Par exemple: domain.com/blog (URL) et domain.com/blog/wordpress (siteurl).

3
fischi

Je suis juste tombé sur la même question et j'ai trouvé un autre moyen de le comprendre. Vous pouvez également utiliser les constantes définies à partir du fichier wp-config.php. SUBDOMAIN_INSTALL serait la clé.

Exemple wp-config extrait pour les paramètres multisite serait

define('WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'intern.cc.dev');
define('PATH_CURRENT_SITE', '/');

Dans votre code

// only run condition, when we are in MS
if( is_multisite() ):

   // check for subfolder installation flag
   if( SUBDOMAIN_INSTALL === false):

      // optional, check if you are on the home WP or a sub WP
      if( get_current_blog_id() > 1):

         // do whatever you need to to here


      endif; // end blog id check
   endif; // end subfolder installation 
endif; // end multisite check
0
Gkiokan