Jetpack Yerel Olarak Çalışıyor [kapalı]


16

Herkes bu konuda kolay bir yol biliyordu merak etti.

Bir WordPress örneğinin yerel geliştirici sürümümün ve canlı sürümün arkasındaki kod senkronize edilmiştir (olması gerektiği gibi). Sorun, "Jetpack" eklentisinin canlı sürümde (WordPress.com'a bağlanabilen canlı bir blog olduğu için) çalıştığı, ancak yerel geliştirici sürümünde olmadığı anlamına gelir.

Bu, işlevselliğin canlı sürümde ("Abone Olun" kenar çubuğu widget'ı gibi) kullanılabildiği, ancak yerel geliştirici sürümünde bulunmadığı anlamına gelir, bu nedenle senkronizasyon dışıdır.

Yanıtlar:


24

JetPack 2.2.1'den itibaren artık yerel bir geliştirme / hata ayıklama modu var. http://jetpack.me/2013/03/28/jetpack-dev-mode-release/

kullanın:

define ('JETPACK_DEV_DEBUG', true);

wp-config'te çalışır ve çalışması için bağlantı gerektirmeyen modüllere erişiminiz olmalıdır.

Güncelleme, yaklaşık v3.3'ten beri tanımlamak yerine filtre aracılığıyla başka bir yerel geliştirme tetikleyicisi eklendi.

En son burada: http://jetpack.me/support/development-mode/

Sitenizin ana makine adında bir nokta yoksa yerel ana bilgisayar gibi geliştirme modu otomatik olarak etkinleştirilir. Mycooltestsite.local veya başka bir URL gibi farklı bir URL kullanırsanız, JETPACK_DEV_DEBUG sabitini tanımlamanız gerekir.

Jetpack'in geliştirme modunu, jetpack_development_mode filtresi sayesinde bir eklenti aracılığıyla da etkinleştirebilirsiniz:

add_filter( 'jetpack_development_mode', '__return_true' );

Jetpack v3.9'dan itibaren artık bir siteyi üretim yerine bir sahneleme alanı olarak tanımlanmaya zorlayan bir hazırlama modu filtresi var: https://developer.jetpack.com/hooks/jetpack_is_staging_site/

add_filter( 'jetpack_is_staging_site', '__return_true' );

2
Geliştirme / Hata Ayıklama modu Requires Connection, modüller dosyalarındaki ( jetpack/modules/*.php) başlığı arar . Bu şekilde hangilerinin geliştirme modunda çalışıp çalışmayacağını kontrol edebiliriz.
Brasofilo

Localhost üzerinde geliştirme modu etkinleştirildiğinde hala hangi özelliklerin çalıştığını gösteren bir liste: wpperform.com/jetpack-development-mode
Casey Plummer

9

@TracyRotton tarafından sağlanan bağlantıdaki yöntem Jetpack 2.0 ve WordPress 3.4.2'den beri çalışmıyor gibi görünüyor.

Tüm veritabanı alanlarını çoğaltsa bile, bağlı olarak davranmaz.
jetpack veritabanı


OP sorusu bir geliştirme ve üretim ortamını senkronize etmekle ilgili olduğundan, belki mümkün değildir.

Hangi modüllerin çalışıp hangilerinin çalışmadığını derinlemesine test etmedim, ancak Jetpack, dosyada aşağıdaki değişikliği yaparak bağlandığına inanarak kandırılabilir /plugins/jetpack/jetpack.php.

Sınıf içinde Jetpack_Datailk işlevi aşağıdaki get_access_tokengibi değiştirin :

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;
            }

Ya da sadece seçeneğin içinden kopyalayabileceğimiz bir return true;yerine koyun .user_tokensjetpack_options

Not: Bu cevabın ilk versiyonu başka bir numara kullandı. Burada, teoride her şeyi yakalayan tek satırlı bir modifikasyon ...


Ayrıca, içindeki force_user_connection()yöntem gibi tek tek modülleri hacklemeniz de gerekebilir publicize/publicize-jetpack.php. Bununla birlikte, yine de, gerçekte bağlıymış gibi görünmüyor. Kod üzerinden kapsamlı bir şekilde kazmadım, ama şüphem kodda gerçekten canlı bir sunucuda olduğu gibi tam olarak aynı şekilde yürütülmesi için hacklenmesi gereken çok daha fazla yer var.
Ian Dunn

1
@IanDunn, kabul ettiğim, cevabım daha fazla "bağlı olmam hakkında nag etmeyin ve bazı kancaları test edeyim" hakkında ve senkronize olarak dev ve konuşlandırılmış sürümlere sahip OP sorununu gerçekten hedeflemiyor.
brasofilo

@IanDunn, başka bir yol buldu, belki daha etkili. Cevabı güncelledi, ne düşünüyorsun?
brasofilo

Dün buna benzer bir şey denedim, ancak yine de hazırlama sunucumda gördüğüm sorunu yeniden üretemedim, bu yüzden tamamen çalışıp çalışmadığından emin değilim. Sorun farklı bir eklentide bir hata olduğu ortaya çıktı ve şimdi düzeltildi, bu yüzden artık Jetpack'i kesmek zorunda değilim.
Ian Dunn

7

Etkinleştirilen bir yüklemeden veritabanı alanı değerlerini yerel yüklemenize kopyalayarak JetPack'i kandırmak mümkündür.

JetPack arama bağlı olan bir Açık (uzaktan) yüklemek wp_optionsiçin tablo option_nameile başlayan alanlar jetpack_gibi:

  • jetpack_activated
  • jetpack_options
  • jetpack_nonce_{random_string}
  • jetpack_active_modules

Bu alanları ve değerleri yerel kurulum veritabanınıza kopyalayın.

Bu işlem hakkında daha fazla bilgi için bkz. Http://www.ravendevelopers.com/node/57


Bağlantı için teşekkürler. MySQL hatası alıyorum "# 1062 - Anahtar 'option_name' için yinelenen giriş 'jetpack_activated'"
AlecRust

4

Brasofilo'nun en son çözümünden esinlenerek, daha kolay bir yol var, sadece jetpack'i açın. Php,

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

ve bununla değiştirin:

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

Veritabanı ile oynamaktan çok daha kolay görünüyor ve Jetpack sürümü 2.1.1ve WordPress sürümü ile benim için çalıştı 3.5

Ancak, eklentinin canlı sitede düzgün çalışmasını sağlamak istiyorsanız, bu dosyayı veya böyle bir şeyi göz ardı etme kuralını ayarlamanız gerekir, çünkü gerçek bayrağı sabit kodlamaktan ziyade gerçek yolla bağlanmak daha iyidir.


3

Tam Jetpack işlevselliği istiyorsanız , geliştirme ortamınızın herkese açık olarak sorgulanabilir olması gerekir. Bunu, dev adresinizi sandbox.mysite.com gibi bir alt alan adı yaparak, bu DNS kaydını geliştirme sunucunuzun bulunduğu IP adresini gösterecek şekilde ayarlayarak ve muhtemelen yönlendirici / güvenlik duvarınızı 80 numaralı bağlantı noktası isteklerine izin verecek şekilde yapılandırarak ayarlayabilirsiniz. makinenize.

Başka bir seçenek, bir hazırlama ortamı çalıştırmak ve bunu Jetpack ile ilgili herhangi bir şey için kullanmaktır. Evreleme ortamlarının birçok avantajı vardır, bu nedenle bunu kurmak yine de değerli bir yatırım olacaktır.


2

jetpack_development_modefiltresi:

Sadece bahsetmek istiyorum jetpack_development_mode filtreden .

Sadece şunu kullanabilirsiniz:

add_filter( 'jetpack_development_mode', '__return_true' );

JetPack'i çalıştırmak yerel olarak .

Küçük bir eklenti:

wp-config.phpDosyayı normal hile ile değiştirmek zorunda kalmamak için :

define ('JETPACK_DEV_DEBUG', true);

şimdi bu küçük eklenti ile kontrol edebilirsiniz:

<?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'da kontrol edebilirsiniz .


-1

Üzerinde düzeltme http://ravendevelopers.com/node/57 2.x yukarıda Jetpack sürümleri ile çalışmaz OLABİLİR 2.x sürümünde çalışmazsa Jetpack'i canlı sitenize önce (example.com) gibi yüklemeyi deneyin, wordpress.com'a bağlayın ve ardından ayarları canlı sitenizden localhost / örneğinize aktarın. aynı (example.com'dan içe aktarılan ayarlar localhost / example2 ile çalışmayabilir). Şey, canlı sitenizde yaptığınız şeydir, içe aktarılan ayarların yerel ana makinenizdeki aynı site için olduğundan emin olun.


-2

Hmm, cevabın basitleştirilebileceği anlaşılıyor. Bu değişikliği kabul ederseniz cevabınızı oylayacağım.

İs_active () true değerini döndürdüğünden, admin_page () öğesinde yalnızca bir satırı değiştirmeniz gerekir:

1.değeri $is_user_connectedolarak değiştirtrue

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

Merhaba Matt, bunun cevabımın bir yorumu olduğunu anlıyorum. is_activeJetPack'te 2 işlev vardır, bu yüzden çözüm gereksiz görünüyor, ancak değil :)
brasofilo

Hmm, bir bakayım. Ben sadece Jetpack sınıfında olan bir is_active yöntemi buldum, ama tekrar kontrol edecek düşündüm.
Matt Senato
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.