Jetpack s'exécutant localement [fermé]

14

Je me demandais si quelqu'un connaissait un moyen simple de contourner ce problème.

Le code derrière la version de développement locale d’une instance WordPress et la version en direct sont synchronisés (comme il se doit). Le problème est que cela signifie que le plug-in "Jetpack" fonctionne sur la version en direct (car il s’agit d’un blog en direct pouvant se connecter à WordPress.com), mais pas sur la version de développement local.

Cela signifie que les fonctionnalités sont disponibles sur la version en direct (comme le widget de la barre latérale "S'abonner") mais pas sur la version dev locale, elles sont donc désynchronisées.

    
posée AlecRust 15.02.2012 - 00:13

8 réponses

23

À partir de JetPack 2.2.1, il existe maintenant un mode de développement / débogage local. enlace

utiliser:

define ('JETPACK_DEV_DEBUG', true);

dans votre wp-config et vous devriez avoir accès à tous les modules ne nécessitant pas de connexion pour fonctionner.

Mise à jour, car autour de la v3.3 un autre déclencheur de développement local a été ajouté via un filtre au lieu de définir.

La dernière version est maintenant disponible: enlace

  

Le mode de développement s'active automatiquement si vous n'avez pas de période   dans le nom d’hôte de votre site, c’est-à-dire localhost. Si vous utilisez une autre URL,   tels que mycooltestsite.local ou quelque chose, vous devrez alors   définir la constante JETPACK_DEV_DEBUG.

     

Vous pouvez également activer le mode de développement de Jetpack via un plugin, grâce au filtre jetpack_development_mode:

add_filter( 'jetpack_development_mode', '__return_true' );

Depuis Jetpack v3.9, il existe désormais un filtre de mode intermédiaire qui oblige un site à être reconnu comme site intermédiaire plutôt que comme un site de production: enlace

add_filter( 'jetpack_is_staging_site', '__return_true' );
    
réponse donnée jb510 30.03.2013 - 02:23
9

La méthode dans le lien fourni par @TracyRotton semble ne pas fonctionner depuis Jetpack 2.0 et WordPress 3.4.2.

Même en répliquant tous les champs de la base de données, il ne se comporte pas comme connecté.

Commelaquestiondel'OPconcernelasynchronisationd'unenvironnementdedéveloppementetd'unenvironnementdeproduction,cen'estpeut-êtrepaspossible.

Jen'aipastestéendétailquelsmodulesfonctionnentounon,maisJetpackpeutêtreamenéàcroirequ'ilestconnectéeneffectuantlamodificationsuivantedanslefichier/plugins/jetpack/jetpack.php.

DanslaclasseJetpack_Data,modifiezlatoutepremièrefonctionget_access_tokencomme:

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

Oumettezsimplementunreturntrue;àlaplaceduuser_tokensquenouspouvonscopieràl'intérieurdel'optionjetpack_options.

PS:la première version de cette réponse utilisait une autre astuce. Ici, il s’agit d’une modification d’une ligne qui saisit tout, en théorie ...

    
réponse donnée brasofilo 14.11.2012 - 20:59
7

Il est possible de tromper JetPack en copiant les valeurs de champ de base de données d’une installation activée dans votre installation locale.

Lors d’une installation (à distance) avec JetPack connecté, recherchez dans la table wp_options les champs option_name commençant par jetpack_ , tels que:

  • jetpack_activated
  • jetpack_options
  • jetpack_nonce_{random_string}
  • jetpack_active_modules

Copiez ces champs et ces valeurs dans votre base de données d'installations locale.

Pour plus de détails sur ce processus, voir: enlace

    
réponse donnée Tracy Rotton 11.10.2012 - 22:15
4

Inspiré par la dernière solution de brasofilo, il existe même un moyen plus simple: il suffit d'ouvrir jetpack.php, de rechercher

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

et remplacez par ceci:

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

Cela semble être beaucoup plus facile que de jouer avec la base de données et a fonctionné pour moi avec les versions Jetpack 2.1.1 et WordPress 3.5

Mais vous devriez définir une règle d'ignorance pour ce fichier ou quelque chose comme ça si vous voulez que le plug-in fonctionne correctement sur le site actif, car il est préférable d'être connecté de manière réelle que de coder en dur l'indicateur actif.

    
réponse donnée GabLeRoux 18.01.2013 - 15:55
3

Si vous souhaitez une fonctionnalité complète dans Jetpack, vous devez interroger publiquement votre environnement de développement. Vous pouvez configurer cela en faisant de votre adresse dev un sous-domaine, par exemple. sandbox.mysite.com, en configurant cet enregistrement DNS pour qu'il pointe vers l'adresse IP où se trouve votre serveur de développement et éventuellement en configurant votre routeur / pare-feu pour autoriser les requêtes du port 80 sur votre ordinateur.

Une autre option consiste à exécuter un environnement intermédiaire et à l'utiliser pour tout ce qui concerne Jetpack. Les environnements de transfert présentent de nombreux avantages, il serait donc rentable de le configurer de toute façon.

    
réponse donnée Matthew Boynes 15.02.2012 - 00:26
2

Le filtre jetpack_development_mode :

Je souhaite simplement mentionner le filtre jetpack_development_mode .

Vous pouvez simplement utiliser:

add_filter( 'jetpack_development_mode', '__return_true' );

exécuter JetPack localement.

Un petit plugin:

Pour éviter de devoir modifier le fichier wp-config.php avec le truc habituel:

define ('JETPACK_DEV_DEBUG', true);

vous pouvez maintenant le contrôler via ce minuscule 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' );

Vous pouvez le vérifier sur GitHub .

    
réponse donnée birgire 13.05.2014 - 22:30
-1

Le correctif de enlace NE POURRAIT PAS fonctionner avec les versions de Jetpack supérieures à 2.x. Si cela ne fonctionne pas sur la version 2.x, essayez d’installer Jetpack d’abord sur votre site actif, par exemple (exemple.com), connectez-le à wordpress.com, puis importez les paramètres de votre site actif sur votre localhost / example, qui doit être idem (les paramètres importés depuis exemple.com risquent de ne pas fonctionner avec localhost / exemple2). Ce que vous faites sur votre site actif, assurez-vous que les paramètres importés s’appliquent au même site sur votre hôte local.

    
réponse donnée anithegregorian 26.12.2012 - 20:31
-2

Hmm, il semblerait que votre réponse puisse être simplifiée. Adoptez ce changement et je vais voter votre réponse.

Comme is_active () renvoie true, il vous suffit de modifier une ligne dans admin_page ():

1. change la valeur $is_user_connected en 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
    
réponse donnée Matt Senate 26.11.2012 - 23:14

Lire d'autres questions sur les étiquettes