Is there a way to get the path to where WordPress is installed?
I was using the following:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
It is fine for www.example.com -> /usr/local/pem/vhosts/165312/webspace/httpdocs
It is not fine for www.example.com/blog since I need to hard code the folder name (blog).
Later I found a way by using this:
$iroot = getcwd();
$folder = explode("/", $iroot);
$dir = $folder[8]; // I know is 8
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
require "$root/$dir/wp-blog-header.php";
But still it is a lot of complicated stuff. Is there a simple way to get where WordPress is installed (the path) without hard coding?
Note: 1 WordPress functions will not work since this is somehow outside WordPress. As noted on the last example, the whole point of determine the WordPress installation path is to require "wp-blog-header.php";
on multiple WordPress installations where each installation uses a different folder (example.com/blog-one and example.com/blog-two), not WordPress MU or multi site.
Note: 2 If instead of require "$root/$dir/wp-blog-header.php";
I use require "wp-blog-header.php";
it will work as long as the file is in the same folder, but in my case the file will be sometimes in a different folder.
Use the ABSPATH constant:
This should print your WordPress path.
Here’s what I’m doing:
Setup:
Usage:
This is working very well for me at the moment for instantiating a WordPress environment regardless of where the script is. Definitely need to sanitize before using any $_SERVER variables (and I need to triplecheck this outside my localhost environment), but I don’t think it requires severe modifications to be a practical universal solution.
This is how to do it from within WordPress (which isn’t what the questioner was asking for, but what I suspect many people will be searching forâ¦)
There’s a dedicated function, get_home_path(), which’ll give you something like:
Other functions for file and content directories (and web paths).
Root example:
The example below will work on any of the blogs (“blog-one”, “blog-two” and “some-blog”) and the script or file can be installed on any subfolder of the blog.
This makes the script independent. The script will work on any folder on any WordPress installation installation as long as the folder is the number 8. If the installation is on a sub folder, the number 8 will have to be increased. Also bear in mind that the current path may have more or fewer folders, meaning that the script has to be adapted accordingly.
Note: This will work by “hard coding” the folder position on the path and, as long as all installation have the same position, the script will work. The other way around is to hard code.
If all you are trying for is the current directory of where the file being called is located, then I would use:
A lot of this depends on where the file is located. If it is in the same directory as the WordPress installation then it would be something like:
If you can reach the database, you need to do
in file wp-blog-header.php.
Then connect to the database from any application and retrieve the path with the following query:
Of course, you would need to know the database name and WordPress table prefix.
PS: This may or may not be your solution, but it is one of the ways.
Why not simply do the following in the wp-config.php:
e.g.
will return “/one/two/three” and
will return “”
Will give you the exact WordPress root.
For example, your root address is http://www.myroot.com, and your WordPress site is in the WordPress folder in public_html, then wwww.myroot.com/wordpress/ will be the result in $WP_PATH. In such a case your current file name should be in your plugin root directory. Like some_plugin is my plugin name. So the full path will become:
And
localhot/wordpress/wp_content/plugins/some_plugin/myfile.php
is my file name where I wrote this script, will give me/wordpress
. This worked for me as I wanted my wordpress directory name. So look for contents like this: