Jetpack em execução localmente [fechado]

14

Perguntou se alguém sabia de uma maneira fácil de contornar isso.

O código por trás da minha versão de desenvolvimento local de uma instância do WordPress e a versão ao vivo estão em sincronia (como deveriam ser). O problema é que o plugin "Jetpack" está trabalhando na versão ao vivo (já que é um blog ao vivo que pode se conectar ao WordPress.com), mas não na versão local do desenvolvedor.

Isso significa que a funcionalidade está disponível na versão ao vivo (como o widget da barra lateral "Inscrever-se"), mas não na versão local do desenvolvedor, portanto, eles estão fora de sincronia.

    
por AlecRust 15.02.2012 / 00:13

8 respostas

23

A partir do JetPack 2.2.1, existe agora um modo de desenvolvimento / depuração local. enlace

use:

define ('JETPACK_DEV_DEBUG', true);

no seu wp-config e você deve ter acesso a qualquer módulo que não necessite de uma conexão para funcionar.

Atualização, já que por volta da v3.3 outro gatilho de desenvolvimento local foi adicionado via filtro ao invés de definir.

A última versão está aqui: enlace

  

O modo de desenvolvimento é ativado automaticamente se você não tiver um período   no nome do host do seu site, por exemplo, localhost. Se você usa um URL diferente,   como mycooltestsite.local ou algo assim, então você precisará   define a constante JETPACK_DEV_DEBUG.

     

Você também pode ativar o modo de desenvolvimento do Jetpack por meio de um plug-in, graças ao filtro jetpack_development_mode:

add_filter( 'jetpack_development_mode', '__return_true' );

A partir do Jetpack v3.9, há agora também um filtro de modo de teste que força um site a ser reconhecido como um site de teste, em vez de produção: enlace

add_filter( 'jetpack_is_staging_site', '__return_true' );
    
por jb510 30.03.2013 / 02:23
9

O método no link fornecido pelo @TracyRotton parece não estar funcionando desde o Jetpack 2.0 e WordPress 3.4.2.

Mesmo replicando todos os campos do banco de dados, ele não funciona como conectado.

ComoaquestãodoOPésobreasincronizaçãodeumambientededesenvolvimentoeprodução,talveznãosejapossível.

Eunãotesteiemprofundidadequaismódulosfuncionamequaisnão,masoJetpackpodeserinduzidoaacreditarqueestáconectadofazendoaseguintemodificaçãonoarquivo/plugins/jetpack/jetpack.php.

DentrodaclasseJetpack_Data,modifiqueaprimeirafunçãoget_access_tokencomo:

classJetpack_Data{functionget_access_token($user_id=false){return'USER_TOKENS-VALUE-FOUND-INSIDE-THE-OPTION-JETPACK_OPTIONS';//<---trickif($user_id){if(!$tokens=Jetpack::get_option('user_tokens')){returnfalse;}

Ousimplesmentecoloqueumreturntrue;emvezdouser_tokensquepodemoscopiardedentrodaopçãojetpack_options.

PS:a primeira versão desta resposta usou outro truque. Aqui, é uma modificação de uma linha que captura tudo, em teoria ...

    
por brasofilo 14.11.2012 / 20:59
7

É possível enganar o JetPack copiando os valores do campo do banco de dados de uma instalação ativada para a sua instalação local.

Em uma instalação (remota) com o JetPack conectado, pesquise a tabela wp_options dos campos option_name , começando com jetpack_ , como:

  • jetpack_activated
  • jetpack_options
  • jetpack_nonce_{random_string}
  • jetpack_active_modules

Copie esses campos e valores para o banco de dados de instalações locais.

Para mais detalhes sobre este processo, veja: enlace

    
por Tracy Rotton 11.10.2012 / 22:15
4

Inspirado pela mais recente solução da brasofilo, existe ainda um jeito mais fácil, basta abrir o jetpack.php, procurar por

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

e substitua por isso:

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

Parece muito mais fácil do que brincar com o banco de dados e funcionou para mim com a versão do Jetpack 2.1.1 e a versão do WordPress 3.5

Mas você deve definir uma regra de ignorar para este arquivo ou algo assim, se você quiser manter o plugin funcionando bem no site ao vivo, porque é melhor estar conectado pelo caminho real do que codificar o sinalizador ativo.

    
por GabLeRoux 18.01.2013 / 15:55
3

Se você quiser a funcionalidade full do Jetpack, seu ambiente de desenvolvimento precisará ser publicamente consultável. Você pode configurar isso fazendo do seu endereço de desenvolvimento um subdomínio, por exemplo, sandbox.mysite.com, definindo esse registro DNS para apontar para o endereço IP onde seu servidor de desenvolvimento está localizado e, possivelmente, configurando seu roteador / firewall para permitir as solicitações da porta 80 até a sua máquina.

Outra opção é executar um ambiente de preparação e usá-lo para qualquer coisa relacionada ao Jetpack. Os ambientes de preparação têm muitas vantagens, por isso seria um investimento que vale a pena configurar isso de qualquer maneira.

    
por Matthew Boynes 15.02.2012 / 00:26
2

O filtro jetpack_development_mode :

Eu só quero mencionar o filtro jetpack_development_mode .

Você pode simplesmente usar:

add_filter( 'jetpack_development_mode', '__return_true' );

para executar o JetPack localmente.

Um pequeno plugin:

Para evitar a necessidade de modificar o arquivo wp-config.php com o truque comum:

define ('JETPACK_DEV_DEBUG', true);

agora você pode controlá-lo através deste minúsculo plugin:

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

Você pode conferir em GitHub .

    
por birgire 13.05.2014 / 22:30
-1

A correção em enlace PODE não funcionar com as versões do Jetpack acima de 2.x. Se não funcionar na versão 2.x tente instalar o Jetpack no seu site ao vivo primeiro como (example.com), conecte-o ao wordpress.com e importe as configurações do seu site ao vivo para o seu localhost / exemplo que deve ser o mesmo (as configurações importadas de example.com podem não funcionar com localhost / example2). Coisa é o que você faz no seu site ao vivo, certifique-se de que as configurações importadas são para o mesmo site em seu host local.

    
por anithegregorian 26.12.2012 / 20:31
-2

Hmm, parece que sua resposta pode ser simplificada. Adote essa mudança e eu irei votar na sua resposta.

Como is_active () retorna true, você só precisa alterar uma linha em admin_page ():

1. altere o valor $is_user_connected para 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
    
por Matt Senate 26.11.2012 / 23:14