問題描述

我讀了大約 2 種方法來初始化 WordPress 文件之外的 WordPress 功能,所以我們可以在 WordPress 博客之外的任何頁面或網站上使用這些功能。

這兩種方法中的哪一種是正確的?如果兩者都是正確的,每種方法的用例是什麼?使用一種方法或其他方法之間的尊重是甚麼?

方法 1:

<?php
    define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>

方法 2:

<?php
define('WP_USE_THEMES', false);
require('./wp-load.php');
?>

最佳解決方案

文件之間幾乎沒有區別。當您查看 WordPress 頁面時,第一個文件是 index.php 。而且它本質上就是你的 「方法 1:」

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');

博客頭文件 (將 WordPress 的其餘部分排隊) 直接加載 wp-load.php 並啓動 WordPress 本身。以下是 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' );

}

所以你的兩個方法之間的區別是… 什麼是負載。

方法 1 正是 WordPress 加載自身 (除了關閉主題之外) 。所以如果你需要所有的 WordPress,並想要啓動所有的默認鈎子/動作,去那條路線。

方法 2 只是進一步的下降。它加載所有 WordPress,但不調用 wp()或調用模板加載器 (由主題使用) 。方法 2 將會有一點 lighter-weight,但應該給你相同的功能。

次佳解決方案

方法 2,wp-load.php 是訪問 WP 的所有功能,這就是所有。你可以刪除的第一行,不一定。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。