Jetpack Running Locally

时间:2012-02-14 作者:AlecRust

想知道是否有人知道一个简单的方法来解决这个问题。

WordPress实例的本地开发版本和实时版本背后的代码是同步的(应该是同步的)。问题是,这意味着“Jetpack”插件正在使用实时版本(因为它是一个可以连接到WordPress.com的实时博客),而不是本地开发版本。

这意味着功能在实时版本(如“订阅”侧栏小部件)上可用,但在本地开发版本上不可用,因此它们不同步。

8 个回复
最合适的回答,由SO网友:jb510 整理而成

从JetPack 2.2.1开始,现在有了本地开发/调试模式。http://jetpack.me/2013/03/28/jetpack-dev-mode-release/

使用:

define (\'JETPACK_DEV_DEBUG\', true);
在wp配置中,您应该可以访问任何不需要连接即可正常工作的模块。

更新,大约从v3开始。3通过过滤器而不是定义添加了另一个本地开发触发器。

最新版本现已发布:http://jetpack.me/support/development-mode/

如果站点的主机名(即localhost)中没有句点,则会自动启用开发模式。如果您使用不同的URL,例如myoltestsite。然后需要定义JETPACK\\u DEV\\u DEBUG常量。

借助Jetpack\\u development\\u mode过滤器,您还可以通过插件启用Jetpack的开发模式:

add_filter( \'jetpack_development_mode\', \'__return_true\' );
自Jetpack v3起。9现在还有一个临时模式过滤器,强制将站点重新命名为临时站点,而不是生产站点:https://developer.jetpack.com/hooks/jetpack_is_staging_site/

add_filter( \'jetpack_is_staging_site\', \'__return_true\' );

SO网友:brasofilo

自Jetpack 2.0和WordPress 3.4.2以来,@TracyRotton提供的链接中的方法似乎不起作用。

即使复制所有数据库字段,它也不会表现为已连接
jetpack database

因为OP的问题是关于同步开发和生产环境,所以这可能是不可能的。

我还没有深入测试哪些模块工作,哪些不工作,但Jetpack可能会被欺骗,相信它是连接的,在文件中进行以下修改/plugins/jetpack/jetpack.php.

课堂内部Jetpack_Data, 修改第一个函数get_access_token 例如:

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;
            }
或者简单地return true; 而不是user_tokens 我们可以从选项内部复制jetpack_options.

PS:first version 这个答案又使用了另一个技巧。在这里,这是一个单行修改,从理论上讲,它涵盖了所有

SO网友:Tracy Rotton

通过将激活安装中的数据库字段值复制到本地安装中,可以欺骗JetPack。

在连接JetPack的安装(远程)上,搜索wp_options 的表option_name 以开头的字段jetpack_, 例如:

  • jetpack_activated
  • jetpack_options
  • jetpack_nonce_{random_string}
  • jetpack_active_modules
将这些字段和值复制到本地安装数据库中。

有关此过程的更多详细信息,请参阅:http://www.ravendevelopers.com/node/57

SO网友:GabLeRoux

受brasofilo最新解决方案的启发,还有一种更简单的方法,就是打开jetpack。php,搜索

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

/**
* Is Jetpack active?
*/
public static function is_active() {
    return true;
}
似乎比玩数据库要容易得多,我用的是Jetpack版本2.1.1 和WordPress版本3.5

但是如果你想让插件在实时站点上正常工作,你应该为这个文件或类似的文件设置一个忽略规则,因为通过真实的方式连接比硬编码活动标志更好。

SO网友:Matthew Boynes

如果您想要完整的Jetpack功能,您的开发环境将需要公开查询。您可以通过将dev地址设置为子域(例如沙盒)来设置此地址。我的网站。com,将该DNS记录设置为指向开发服务器所在的IP地址,并可能配置路由器/防火墙以允许端口80请求通过您的计算机。

另一种选择是运行临时环境,并将其用于任何与Jetpack相关的内容。暂存环境有许多优点,因此无论如何,设置它都是值得的投资。

SO网友:birgire

Thejetpack_development_mode 过滤器:

我只想提一下jetpack_development_mode 滤器

您可以简单地使用:

add_filter( \'jetpack_development_mode\', \'__return_true\' );
本地运行JetPack。

一个小插件:

以避免修改wp-config.php 使用常规技巧归档:

define (\'JETPACK_DEV_DEBUG\', true);
您现在可以通过这个小插件控制它:

<?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.

SO网友:anithegregorian

修复http://ravendevelopers.com/node/57 可能不适用于2以上的Jetpack版本。x、 如果在版本2上不起作用。首先尝试在你的实时站点上安装Jetpack,比如(example.com),将其连接到wordpress。com,然后将设置从live站点导入到必须相同的localhost/example(从example.com导入的设置可能不适用于localhost/example2)。问题是您在live站点上的操作,请确保导入的设置适用于本地主机上的同一站点。

SO网友:Matt Senate

嗯,看来你的答案可以简化。采纳这一改变,我将投票支持你的答案。

由于is\\u active()返回true,因此只需在admin\\u page()中更改一行:

1. 更改值$is_user_connectedtrue

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

结束

相关推荐

无法上载主题。错误:“无法将上载的文件移动到/var/www/wp-ploads/localhost/2011/10。”

The uploaded file could not be moved to /var/www/wp-uploads/localhost/2011/10. 这是我尝试上载wordpress主题时收到的错误消息。这是我的文件夹的当前权限状态。$ sudo ls -la /var/www/wp-uploads/localhost total 12 drwxrwxr-- 3 root www-data 4096 2011-10-27 16:44 . drwxr-x--