I read about 2 methods for initializing WordPress function outside of WordPress files so We can use these functions on any page or website outside the WordPress blog.
Which one of these 2 methods is the correct one? What are the use cases for each method if both are correct? What is the deference between using one method or the other?
Method 1:
<?php
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>
Method 2:
<?php
define('WP_USE_THEMES', false);
require('./wp-load.php');
?>
There’s little difference between the files. When you view a WordPress page, the first file called is index.php
. And it is, essentially, your “Method 1:”
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');
The blog header file (that queues up the rest of WordPress) loads wp-load.php
directly and fires up WordPress itself. Here’s most of wp-blog-header.php
:
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );
wp();
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
So the difference between your two methods is … what’s loaded.
Method 1 is exactly what WordPress does to load itself (with the exception of turning themes off). So if you need all of WordPress and want to fire all of the default hooks/actions, go with that route.
Method 2 is just a further step down the line. It loads all of WordPress, but doesn’t call wp()
or invoke the template loader (used by themes). Method 2 will be a little lighter-weight, but should give you the same functionality.