WP.

WordPress functionaliteit gebruiken in een los php bestand

Voor het ontwikkelen van Really Simple SSL wilde ik een deactivatie optie inbouwen in de plugin, voor het geval je niet meer in de WordPress back-end zou kunnen. Als WordPress niet meer geladen wordt is de enige manier om dit te bereiken het maken van een apart .php bestand, waarin WordPress als het ware wordt ingeladen.

Dit bestand kan je dan rechtstreeks via je browser benaderen, zonder via het (locked-out) WordPress systeem te hoeven. Om te voorkomen dat iedereen bij dit bestand zou kunnen heb ik het eenvoudigweg naar .txt hernoemd.

De vraag is dus hoe je in een php bestand, dat niet via WordPress is geladen, toch van alle WordPress functionaliteit gebruik kan maken.

Dat is eigenlijk heel eenvoudig. Door een paar regels code toe te voegen heb je de beschikking over alle functionaliteiten en plugins. Dit is voor mij ook handig gebleken bij het importeren van grote hoeveelheden data uit andere systemen naar WordPress, en cron jobs die dergelijk imports op regelmatige basis doen. Je kan nu een applicatie maken die onafhankelijk van WordPress functioneert, met behoud van alle functies.

Benodigde code:

# De template engine laden we niet in.
define( 'WP_USE_THEMES', false );

#Voor WordPress hebben we het basepath nodig. De hiervoor benodigde functie volgt onderaan. 
define( 'BASE_PATH', find_wordpress_base_path()."/" );

# Nu kan je de WordPress core laden
require_once( BASE_PATH.'wp-load.php' );
require_once( BASE_PATH.'wp-includes/class-phpass.php' );
require_once( BASE_PATH . 'wp-admin/includes/image.php' );
function find_wordpress_base_path() {
$dir = dirname(__FILE__);
do {
    //it is possible to check for other files here
    if( file_exists($dir."/wp-config.php") ) {
        return $dir;
    }
} while( $dir = realpath("$dir/..") );
return null;
}