回答:
JetPack 2.2.1現在、ローカル開発/デバッグモードがあります。 http://jetpack.me/2013/03/28/jetpack-dev-mode-release/
使用する:
define ('JETPACK_DEV_DEBUG', true);
wp-configで、機能するために接続を必要としないモジュールにアクセスする必要があります。
更新。v3.3以降、別のローカル開発トリガーが定義ではなくフィルターを介して追加されたため。
最新版はここにあります:http : //jetpack.me/support/development-mode/
サイトのホスト名、つまりlocalhostにピリオドがない場合、開発モードは自動的に有効になります。mycooltestsite.localなどの別のURLを使用する場合は、JETPACK_DEV_DEBUG定数を定義する必要があります。
jetpack_development_modeフィルターのおかげで、プラグインを介してJetpackの開発モードを有効にすることもできます。
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の質問は開発環境と実稼働環境の同期に関するものであるため、おそらく不可能です。
どのモジュールが機能し、どのモジュールが機能しないかを詳細にテストしたことはありませんが、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:この答えの最初のバージョンは別のトリックを使用しました。ここでは、理論的にはすべてをキャッチする1行の修正です...
force_user_connection()
メソッドのように、個々のモジュールをハッキングする必要がある場合もありますpublicize/publicize-jetpack.php
。ただし、それでも、実際に接続されている場合とまったく同じようには動作しないようです。コードを徹底的に掘り下げたことはありませんが、実際のサーバーで実行するのとまったく同じように実行するためには、コード内にハッキングする必要のある場所がもっとたくさんあるのではないかと疑っています。
アクティブ化されたインストールからローカルインストールにデータベースフィールド値をコピーすることにより、JetPackをだますことができます。
JetPackが接続されたインストール(リモート)で、次のような、で始まるフィールドのwp_options
テーブルを検索します。option_name
jetpack_
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_development_mode
フィルタ:jetpack_development_mode
フィルターについて言及したいだけです。
次を使用できます。
add_filter( 'jetpack_development_mode', '__return_true' );
JetPackをローカルで実行します。
wp-config.php
通常のトリックでファイルを変更する必要を回避するには:
define ('JETPACK_DEV_DEBUG', true);
これで、この小さなプラグインを介して制御できます。
<?php
/**
* Plugin Name: Run JetPack locally
* Plugin URI: http://wordpress.stackexchange.com/a/144317/26350
* Version: 0.0.1
*/
add_filter( 'jetpack_development_mode', '__return_true' );
http://ravendevelopers.com/node/57 MIGHT の修正は、2.xより上のJetpackバージョンでは機能しません。バージョン2.xで動作しない場合は、まず(example.com)のようにライブサイトにJetpackをインストールし、wordpress.comに接続してから、ライブサイトからlocalhost / exampleに設定をインポートします。同じ(example.comからインポートされた設定はlocalhost / example2では機能しない可能性があります)。実際のサイトで行うことは、インポートした設定がローカルホスト上の同じサイト用であることを確認してください。
うーん、あなたの答えは簡単にできるようです。この変更を採用すると、あなたの回答に賛成票を投じます。
is_active()はtrueを返すため、admin_page()の1行を変更するだけで済みます。
1.
値$is_user_connected
を変更するtrue
function admin_page() {
global $current_user;
$role = $this->translate_current_user_to_role();
$is_connected = Jetpack::is_active();
$user_token = Jetpack_Data::get_access_token($current_user->ID);
$is_user_connected = true;//$user_token && !is_wp_error($user_token);
// ...function continues
is_active
JetPackには2つの関数があるため、ソリューションは冗長に見えますが、そうではありません:)
Requires Connection
、モジュールファイル(jetpack/modules/*.php
)でヘッダーを探します。この方法により、どのモードが開発モードで動作するかどうかを確認できます。