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