web-dev-qa-db-fra.com

Jetpack fonctionnant localement

Je me demandais si quelqu'un connaissait un moyen facile de contourner cela.

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

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

15
AlecRust

Depuis JetPack 2.2.1, il existe maintenant un mode de développement/débogage local. http://jetpack.me/2013/03/28/jetpack-dev-mode-release/

utilisation:

define ('JETPACK_DEV_DEBUG', true);

dans votre wp-config et vous devriez avoir accès à tous les modules qui ne nécessitent 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 plutôt que de définir.

Les dernières nouvelles sont maintenant ici: http://jetpack.me/support/development-mode/

Le mode de développement est automatiquement activé 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 URL différente, telle que mycooltestsite.local ou quelque chose d'autre, vous devrez 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 site de production: https://developer.jetpack.com/hooks/jetpst_staging_site/

add_filter( 'jetpack_is_staging_site', '__return_true' );
23
jb510

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 n’agit pas comme connecté.
jetpack database


Comme la question OP concerne la synchronisation d’un environnement de développement et d’un environnement de production, ce n’est peut-être pas possible.

Je n'ai pas testé en détail quels modules fonctionnent ou non, mais Jetpack peut être amené à croire qu'il est connecté en effectuant la modification suivante dans le fichier /plugins/jetpack/jetpack.php.

Dans la classe Jetpack_Data, modifiez la toute première fonction get_access_token comme:

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

Ou simplement, mettez un return true; au lieu du user_tokens que nous pouvons copier depuis l’option jetpack_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 capture tout, en théorie ...

9
brasofilo

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: http://www.ravendevelopers.com/node/57

7
Tracy Rotton

Inspiré de 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;
}

Semble être beaucoup plus facile que de jouer avec la base de données et a travaillé pour moi avec la version Jetpack 2.1.1 et la version 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.

4
GabLeRoux

Si vous voulez la fonctionnalité full / Jetpack, votre environnement de développement devra pouvoir être interrogé publiquement. Vous pouvez configurer cela en transformant votre adresse de développement en 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 intéressant de le configurer de toute façon.

3
Matthew Boynes

Le filtre jetpack_development_mode:

Je veux juste 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 d'avoir à modifier le fichier wp-config.php avec l'astuce habituelle:

define ('JETPACK_DEV_DEBUG', true);

vous pouvez maintenant le contrôler via ce petit 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 .

2
birgire