問題描述

想知道有沒有人知道一個簡單的方法。

我的本地開發版本的 WordPress 例項和即時版本之後的程式碼正在同步 (應該是) 。問題是這意味著”Jetpack” 外掛正在使用即時版本 (因為它是一個可以連線到 WordPress.com 的即時部落格),而不是在本地的開發版本上。

這意味著即時版本上可以使用功能 (如”Subscribe” 側邊欄小工具),但不在本地開發版本上,因此它們不同步。

最佳解決方案

從 JetPack 2.2.1 開始,現在有一個本地開發/除錯模式。 http://jetpack.me/2013/03/28/jetpack-dev-mode-release/

使用:

define ('JETPACK_DEV_DEBUG', true);

在您的 wp-config 中,您應該可以訪問任何不需要連線功能的模組。

更新,因為在 v3.3 附近,透過過濾器而不是 define 新增了另一個本地開發觸發器。

現在最新的是:http://jetpack.me/support/development-mode/

Development mode automatically gets enabled if you don』t have a period in your site』s hostname, i.e. localhost. If you use a different URL, such as mycooltestsite.local or something, then you will need to define the JETPACK_DEV_DEBUG constant.

You can also enable Jetpack』s development mode through a plugin, thanks to the jetpack_development_mode filter:

add_filter( 'jetpack_development_mode', '__return_true' );

從 Jetpack v3.9 開始,現在還有一個分段模式過濾器,強制將站點作為分段站點而不是生產進行重新認證:https://developer.jetpack.com/hooks/jetpack_is_staging_site/

add_filter( 'jetpack_is_staging_site', '__return_true' );

次佳解決方案

由 @TracyRotton 提供的連結中的方法似乎沒有工作,因為 Jetpack 2.0 和 WordPress 3.4.2 。

甚至複製所有的資料庫欄位,它不會作為連線。


由於 OP 問題是關於同步開發和生產環境,也許是不可能的。

我沒有測試 in-depth 哪些模組工作,哪些模組不工作,但 Jetpack 可以被欺騙,認為它被連線在檔案/plugins/jetpack/jetpack.php 中進行了以下修改。

Jetpack_Data 類中,修改了第一個函式 get_access_token,如:

class Jetpack_Data {
    function get_access_token( $user_id = false ) {
        return 'USER_TOKENS-VALUE-FOUND-INSIDE-THE-OPTION-JETPACK_OPTIONS'; // <---trick
        if ( $user_id ) {
            if ( !$tokens = Jetpack::get_option( 'user_tokens' ) ) {
                return false;
            }

或者簡單地放置一個 return true; 代替 user_tokens,我們可以從選項 jetpack_options 中複製。

PS:這個答案的 first version 使用了另一個技巧。在這裡,它是一個 one-line 修改,捕獲所有,在理論上…

第三種解決方案

可以透過將啟用的安裝中的資料庫欄位值複製到本地安裝中來刺激 JetPack 。

在使用 JetPack 連線的安裝 (遠端) 上,以 jetpack_開頭的 option_name 欄位搜尋 wp_options 表,例如:

  • jetpack_activated

  • jetpack_options

  • jetpack_nonce_{random_string}

  • jetpack_active_modules

將這些欄位和值複製到本地安裝資料庫中。

有關此過程的更多詳細資訊,請參閱:http://www.ravendevelopers.com/node/57

第四種方案

靈感來自於 brasofilo 的最新解決方案,甚至還有一個更簡單的方法,只需開啟 jetpack.php 即可

/**
* Is Jetpack active?
*/
public static function is_active() {
    return (bool) Jetpack_Data::get_access_token( JETPACK_MASTER_USER );
}

並替換為:

/**
* Is Jetpack active?
*/
public static function is_active() {
    return true;
}

似乎比使用資料庫要簡單得多,並且使用 Jetpack 版本 2.1.1 和 WordPress 版本 3.5

但是您應該為此檔案設定一個忽略規則,如果您希望保持外掛在即時站點上正常工作,因為透過真正的方式來連線,而不是強制編輯活動標誌。

第五種方案

如果您想要完整的 Jetpack 功能,您的開發環境將需要公開查詢。您可以透過使您的開發者地址成為子域,例如 sandbox.mysite.com,將 DNS 記錄設定為指向開發伺服器所在的 IP 地址,並且可能配置路由器/防火牆以允許埠 80 請求透過您的計算機。

另一個選項是執行分段環境,並將其用於任何 Jetpack-related 。分段環境有很多優點,所以無論如何,這是一個有價值的投資。

參考文獻

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