WooCommerce会员跨多站点同步

时间:2017-07-20 作者:Johann Savalle

我有一个WordPress Multisite 已安装(单个域+子文件夹-每个实例适用于不同的国家/地区-因此有多种语言,但目前为单一货币-欧元)

用户将自动添加到所有实例中(使用“加入我的网站”)——因此您可以在所有实例上使用您的登录。

现在的问题是:

我们想推出高级subscription-based membership (这将产生积极的折扣)。

当用户在一个站点上购买订阅时,他将被授予一个成员计划。Now the question is, how can I automatically activate it on all instances?

当它在所有其他实例上购买给同一用户的礼物时,我正在考虑运行一些代码。

但也许有一个插件可以做到这一点?或者类似的东西,我可以用来作为基础?

或者一些可能有用的API文档?我不知道如何从这里开始。

1 个回复
SO网友:Johann Savalle

我已经通过编写一个插件部分修复了这个问题,在该插件中,我生成了一个短代码,如果用户登录,我可以在成为成员后使用它进行编程。

function wp_add_missing_membership ( $user_id, $plan_id ) {
    if ( ! function_exists( \'wc_memberships\' ) ) {
       return;
    }
    $args = array(
    // Enter the ID (post ID) of the plan to grant at registration
    \'plan_id\'       => $plan_id,
    \'user_id\'       => $user_id,
);
wc_memberships_create_user_membership( $args );

// Get the new membership
$user_membership = wc_memberships_get_user_membership( $user_id, $args[\'plan_id\'] );

// Add a note so we know how this was registered.
$user_membership->add_note( \'Membership imported from other site\' );
}

function has_woocommerce_subscription($the_user_id, $the_product_id, $the_status) {
    $current_user = wp_get_current_user();
    if (empty($the_user_id)) {
            $the_user_id = $current_user->ID;
    }
    if (WC_Subscriptions_Manager::user_has_subscription( $the_user_id, $the_product_id, $the_status)) {
            return true;
    }
}

function bb_fixmembership ( $atts){
    $a = shortcode_atts( array(\'plan\' => \'0\'), $atts );

    $what_s_the_plan = $a[\'plan\'];
    if ( is_user_logged_in() ) {
            $user_id = get_current_user_id();
            if (wc_memberships_is_user_active_member($user_id, \'student\')) {
               // do nothing - all is good
            } else {
                    wp_add_missing_membership($user_id, $what_s_the_plan);
            }
    }


}

add_shortcode( \'fixmembership\', \'bb_fixmembership\' );
现在,我需要将其与跨网站的订阅同步,这可能需要使用挂钩和用户元数据来实现。

我只是发布了一个答案,因为我没有看到大多数帖子被回复:)所以我想这可能会帮助其他人。。。

将在我完全修复它时发布。

结束

相关推荐

Multisite switch to blog

在我开始这个问题之前,我很抱歉,因为我在本地工作,所以我没有任何代码可以显示。我有一个Wordpress多站点,有3个站点-“site-1”、“site-2”、“site-3”。它们都导入相同的导航部分。php”,从模板文件夹。导航是硬编码的,但动态地从“site-2”中为site-2按钮提取内容在导航部分的开头。php“我获取当前博客id,然后切换到“site-2”。 $the_blog_id = get_current_blog_id(); switch_to_blog(2);&