更改woocommerce中的会员资格状态

问题描述:

我一直在敲我的头大约一周。任何帮助将不胜感激。更改woocommerce中的会员资格状态

我有一个woocommerce商店,我需要能够通过Php更新用户的成员身份(取消,活跃等)等。

我知道我可以抓住他们目前的状态用:

wc_memberships_get_user_membership($user_id, $membership_id); 

,并创造新的成员:

wc_memberships_create_user_membership($args); 

,但我还没有找到一个办法只有改变状态。

谢谢!

+0

你想改变所有用户的状态?立即? – jjj

+0

不,我需要更改一个会员的一个用户状态 – GeneralCan

好了,所以搜索周围一个多月,并与Woocommerce的支持团队来回后(他们没有帮助:/),我想出了这个解决方案:

在数据库中游弋我注意到所有成员资格都只是帖子,而且他们有一个ID和一个帖子作者。所以我想我可以写一点SQL来使它工作。

使用WordPres的内置$wpdb I类是能够只是直接在数据库中更新字段:

首先你要包括在您的函数$ WPDB:

  global $wpdb; 

然后你把查询在一起,下面是它看起来像普通的SQL

 UPDATE ie_posts 
     SET post_status ='wcm-active' 
     WHERE post_parent = 49 AND post_author = 49870 

而这里的是什么样子使用类:

 $wpdb->update('ie_posts', 
      array('post_status' => $_status), 
      array('post_parent' => $_membership_id, 
        'post_author' => $_user_id) 
     ); 

我会建议尝试使用数据库的开发副本,这样你就不会破坏任何东西。

deff不是最漂亮的做法,但它的作用就像一个魅力。如果有人有更好的方式来照顾它,请让我知道。

我会尝试这种方式,例如用“待定”状态得到任何成员:

$user_id = get_current_user_id(); 

$args = array( 
    'status' => 'pending' 
); 

$pending_memberships = wc_memberships_get_user_memberships($user_id, $args); 

然后,用条件检查,你应该能够这样挂起状态更改为另一个。

+0

好的,很酷。你怎么去改变它呢?这就是我坚持的部分。 假设用户有2个成员资格,我需要修改其中一个的状态。 – GeneralCan

+0

我有同样的问题,无法找到修改状态的命令...任何更新? – Stephen

+1

@Stephen是的,看到我的答案。它很脏,但它工作 – GeneralCan