問題描述
想知道有沒有人知道一個簡單的方法。
我的本地開發版本的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。
