wordpressrootdocument-rootrealpathinstallation-path

Get WordPress installation folder path


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.


Solution

  • 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.

    $current_path = getcwd(); // Get the current path to where the file is located
    $folder = explode("/", $current_path); // Divide the path in parts (aka folders)
    $blog = $folder[8]; // The blog's folder is the number 8 on the path
    
    // $root = path without the blog installation folder.
    $root = realpath($_SERVER["DOCUMENT_ROOT"]);
    
    // Now I can require any WordPress file
    require "$root/$dir/wp-blog-header.php";
    
    // For the current installation
    // For example, wp-blog-header.php to get the blog name or
    // wp-config.php to access the database.
    

    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.