Home > Mobile >  Detect a WordPress Installation
Detect a WordPress Installation

Time:07-20

How to detect if a folder is having a WordPress installation or not ?

WP-CLI does that and gives the error This does not seem to be a WP installation, and detects correctly if the directory has a WP install even if it is in any of the subfolders (wp-includes/images or wp-includes/js ) .

I went through the code and it searches for index.php and compares content with the original index.php . One more thing it does is to check for the presence of wp-includes/version.php . Got the idea but how it works on subfolders like those mentioned above is still not clear . Do anybody have any idea on how to do this ? Thanks in advance .

CodePudding user response:

Look for the wp-config.php file. If you find it, require it, then try to use its constants DB_HOST, DB_USER, DB_PASSWORD and DB_NAME to connect to the WordPress database associated with the WordPress instance. If that works, you very likely have a working WordPress instance.

If your current working directory doesn't have wp-config.php look at parent directories recursively until you (a) find it or (b) come to the top level directory.

wp-cli does more elaborate things. But this should work for you.

CodePudding user response:

So i have scribbled a script that detects a WP install . It works as expected inside a wp install folder , but if it is not inside a WordPress install it executes an infinite loop . Can somebody guide on how to stop at top level directory as mentioned by @O.Jones ? Here is my code .

<?php

function get_wp_index($dir=null) {


if(is_null($dir)){
    $dir = getcwd();
}

echo "Currently Looking \n";
echo $dir;

$name = $dir.DIRECTORY_SEPARATOR."index.php";

if ( file_exists( $name ) ) {


    $index_code = (file_get_contents($name));

    if ( preg_match( '|^\s*require\s*\(?\s*(. ?)/wp-blog-header\.php([\'"])|m', $index_code, $matches ) ) {

        echo "Is a WP Install";

        return;

    } else {
        
        echo "Has index File but not one with wp-blog-header";
        echo "\n\n";
        //Go one directory up
        $up_path = realpath($dir. DIRECTORY_SEPARATOR . '..');
        get_wp_index($up_path);

    }
} else {

    echo 'No Index File Found';
    echo "\n\n";
        //Go one directory up
        $up_path = realpath($dir. DIRECTORY_SEPARATOR . '..');
    echo $up_path;
    get_wp_index($up_path);

  }
}

get_wp_index();
?>
  • Related