J'ai un plugin qui appelle un script php autonome (myAjax.php) via un script jQuery.ajax () à l'intérieur du plugin.
J'ai besoin de placer le code suivant dans le fichier myAjax.php:
require_once('../../../wp-load.php');
if (!is_user_logged_in()){
die("You Must Be Logged In to Access This");
}
if( ! current_user_can('edit_files')) {
die("Sorry you are not authorized to access this file");
}
Toutefois, je souhaiterais une méthode plus précise pour spécifier le chemin d'accès à wp-load.php au cas où le chemin relatif réel serait différent de mon exemple.
Pour ajouter à ce que Milo a dit, voici 2 excellents articles sur le sujet.
http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/ ( dernière version ) http://ottopress.com/2010/dont-include-wp-load-please/ ( dernière version )
Toujours dans un souci d’apprentissage, le premier diaporama http://andrewnacin.com/2011/04/16/wordcamp-seattle/ ( dernière version )
Vous pouvez utiliser la constante __DIR__
. Comme le fichier se trouve soit dans le dossier du plugin ou du thème, toujours situés dans le dossier wp-content
. Vous pouvez simplement obtenir le chemin du fichier et couper tout ce qui commence à partir de wp-content
:
$path = preg_replace('/wp-content.*$/','',__DIR__);
Si vous devez vous assurer que le fichier wp ne se trouve pas dans un dossier wp-content (qui sait? Des choses se passent), utilisez un aspect négatif:
$path = preg_replace('/wp-content(?!.*wp-content).*/','',__DIR__);
(puisqu'il est plus facile de s'assurer que votre propre plugin que vous développez ne se trouve pas dans un autre dossier wp-content)
Aaand .. votre wp-load
est là:
include($path.'wp-load.php');
Comme mentionné précédemment, pour AJAX, vous pouvez utiliser technique ajax native de WP-s .
Bien sûr, il existe des cas où la technique native de WPAJAX ne suffit pas.