問題描述

我讀了大約 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。