I have a plugin which calls a stand-alone php script (myAjax.php) via a jQuery.ajax() script inside the plugin.
I need to place the following code into the myAjax.php file:
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");
}
However, I’d like a more bulletproof method of specifying the path to wp-load.php in case the actual relative path is different than my example.
You can use __DIR__
constant. Since the file is either inside plugin or theme folder, which are always located inside wp-content
folder.. You can simply get the path of the file and trim everything starting from wp-content
from it:
$path = preg_replace('/wp-content.*$/','',__DIR__);
If you need to make sure the wp is not inside some wp-content folder (who knows? things happen) – use negative lookahead:
$path = preg_replace('/wp-content(?!.*wp-content).*/','',__DIR__);
(since it’s easier to be sure your own plugin you are developing is not located inside some other wp-content folder)
Aaand.. your wp-load
is there:
include($path.'wp-load.php');
But!
As guys before mentioned, for AJAX you can use WP-s native ajax technique.
Of course, there are cases when WP’s native AJAX technique is not enough.