ローカルで実行中のJetpack [終了]


16

誰かがこれについて簡単な方法を知っていたら疑問に思いました。

WordPressインスタンスのローカル開発バージョンとライブバージョンの背後にあるコードは、同期している必要があります。問題は、これは「Jetpack」プラグインが(WordPress.comに接続できるライブブログであるため)ライブバージョンで動作しているが、ローカルの開発バージョンでは動作していないことを意味します。

つまり、機能はライブバージョン(「Subscribe」サイドバーウィジェットなど)で使用できますが、ローカルの開発バージョンでは使用できないため、同期していません。

回答:


24

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' );

2
開発/デバッグモードはRequires Connection、モジュールファイル(jetpack/modules/*.php)でヘッダーを探します。この方法により、どのモードが開発モードで動作するかどうかを確認できます。
ブラソフィロ

localhostで開発モードが有効になっている場合でも引き続き機能する機能のリスト:wpperform.com/jetpack-development-mode
ケーシープラマー

9

@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。ただし、それでも、実際に接続されている場合とまったく同じようには動作しないようです。コードを徹底的に掘り下げたことはありませんが、実際のサーバーで実行するのとまったく同じように実行するためには、コード内にハッキングする必要のある場所がもっとたくさんあるのではないかと疑っています。
イアン・ダン

1
@IanDunn、同意しました、私の答えは「接続されてフックをテストしないでください」に関するものであり、実際には開発版と展開版を同期させるというOPの問題を対象とはしません。
ブラソフィロ

@IanDunn、別の方法を見つけた、おそらくより効果的。答えを更新しました、どう思いますか?
ブラソフィロ

昨日と同様のことを試みましたが、ステージングサーバーで見た問題を再現できなかったため、完全に機能するかどうかはわかりません。この問題は別のプラグインのバグであることが判明し、現在修正されているため、Jetpackをハックする必要はなくなりました。
イアン・ダン

7

アクティブ化されたインストールからローカルインストールにデータベースフィールド値をコピーすることにより、JetPackをだますことができます。

JetPackが接続されたインストール(リモート)で、次のような、で始まるフィールドのwp_optionsテーブルを検索します。option_namejetpack_

  • jetpack_activated
  • jetpack_options
  • jetpack_nonce_{random_string}
  • jetpack_active_modules

これらのフィールドと値をローカルインストールデータベースにコピーします。

このプロセスの詳細については、http//www.ravendevelopers.com/node/57を参照してください。


リンクをありがとう。私は「#1062 -キー『OPTION_NAME』の『jetpack_activated』重複したエントリ」MySQLのエラーを取得する
AlecRust

4

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

ただし、アクティブフラグをハードコーディングするよりも実際の方法で接続する方がよいため、ライブサイトでプラグインを正常に動作させたい場合は、このファイルまたはそのようなものに無視ルールを設定する必要があります


3

あなたがしたい場合は、完全な Jetpackの機能を、開発環境では、公的照会可能になる必要があります。これを設定するには、devアドレスをサブドメイン(sandbox.mysite.comなど)に設定し、そのDNSレコードを開発サーバーが配置されているIPアドレスを指すように設定します。あなたのマシンに。

別のオプションは、ステージング環境を実行し、それをJetpack関連のあらゆるものに使用することです。ステージング環境には多くの利点があるため、とにかくセットアップすることは価値のある投資になります。


2

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' );

GitHubで確認できます


-1

http://ravendevelopers.com/node/57 MIGHT の修正は、2.xより上のJetpackバージョンでは機能しません。バージョン2.xで動作しない場合は、まず(example.com)のようにライブサイトにJetpackをインストールし、wordpress.comに接続してから、ライブサイトからlocalhost / exampleに設定をインポートします。同じ(example.comからインポートされた設定はlocalhost / example2では機能しない可能性があります)。実際のサイトで行うことは、インポートした設定がローカルホスト上の同じサイト用であることを確認してください。


-2

うーん、あなたの答えは簡単にできるようです。この変更を採用すると、あなたの回答に賛成票を投じます。

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_activeJetPackには2つの関数があるため、ソリューションは冗長に見えますが、そうではありません:)
brasofilo

うーん、見てみましょう。Jetpackクラスにあるis_activeメソッドは1つしか見つかりませんでしたが、再度確認します。
マット上院
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.