web-dev-qa-db-fra.com

Comment éviter de charger wp-load.php à partir de scripts php externes?

j'utilise slim avec wordpress. Cela a fonctionné parfaitement jusqu'à présent. Bien presque. Une fois que j'ai changé en multisite, j'ai dû commencer à créer de fausses variables $_SERVER simulant un nom de domaine. Mais cela a finalement fonctionné.

Ce que je devais utiliser était la suivante:

  global $_SERVER;
  $_SERVER['HTTP_Host'] = 'www.mydomain.com';
  $_SERVER['REQUEST_URI'] = '/';
  require_once(  __DIR__ .'/../../../wp-load.php' );

on se sent mal et très maladroit, mais ne pas l'utiliser conduirait à une erreur, voir ici (ou est-ce que cela compte aussi comme crosspost??):

https://stackoverflow.com/questions/37755976/wordpress-multisite-breaks-including-require-of-wp-load-php

Mais maintenant, j'ai rencontré le problème suivant:

https://stackoverflow.com/questions/37912920/wp-load-php-disabling-the-ob-flush-to-work-correctly

est-il maintenant possible d'accéder à toutes les fonctions wordpress sans utiliser wp-load.php?

le problème auquel je suis confronté est que wp-load.php modifie en quelque sorte l'objet de réponse afin que je ne sois plus en mesure de le vider (voir la note sur le lien: je pense avoir trouvé une solution au problème. Ma question reste posée: un moyen plus correct pour les fonctions wordpress au lieu de wp-load.php?)

1
Toskan

wp-load.php est le seul moyen d'y aller. Je ne pense pas qu'il y ait vraiment une autre façon de charger les fonctions WordPress en toute sécurité ...

Vous pouvez prendre en compte les variations de chemin en l'incluant récursivement à partir de tout fichier où vous en avez besoin, par exemple ...

function file_find_require($file,$folder=null) {
    if ($folder === null) {$folder = dirname(__FILE__);}
    $path = $folder.DIRECTORY_SEPARATOR.$file;
    if (file_exists($path)) {require($path); return $folder;}
    else {
        $upfolder = file_find_require($file,dirname($folder));
        if ($upfolder != '') {return $upfolder;}
    }
}

$rootpath = file_find_require('wp-load.php');
1
majick