我有几个产品,每个产品都与WooCommerce会员计划链接,每个计划都限制一个特定的帖子类别,因此客户只有在购买了会员计划限制该类别的产品之后,才能查看该类别的帖子。
现在,对于每一个新帖子,我想向购买该产品的客户发送电子邮件,限制了该帖子的类别,因此已经发布了一个新帖子。有没有办法做到这一点?
要了解更多详细信息,如下所示:
我有Product_A
和Product_B
2个帖子类别:Literature and Math
2个会员计划:Plan_Prod_A and Plan_Prod_B
Plan_Prod_A
限制类别Literature
Plan_Prod_B restricts Math
要查看“文学”类别的帖子,客户必须购买Product_A,这将授予他使用会员计划Plan_Prod_A的权限。
现在购买后,我需要的是会员资格只要保持有效,对于任何文学类的新发表的帖子,都必须向该客户发送带有该帖子链接的电子邮件,以通知他该新帖子已经发布
答案 0 :(得分:0)
我设法做到了这一点,从长远来看,这会导致任何问题吗?
function post_unpublished( $new_status, $old_status, $post ) {
if ( $old_status != 'publish' && $new_status == 'publish' ) {
$user_id = get_current_user_id();
$post_id = $post->ID;
// if(get_post_meta($post_id,'_wc_memberships_force_public',true)=='yes') return true;
$args = array( 'status' => array( 'active' ));
$plans = wc_memberships_get_user_memberships( $user_id, $args );
$user_plans = array();
foreach($plans as $plan){
array_push($user_plans,$plan->plan_id);
}
$rules = wc_memberships()->get_rules_instance()->get_post_content_restriction_rules( $post_id );
foreach($rules as $rule){
if(in_array($rule->get_membership_plan_id(), $user_plans)){
$post_url = get_permalink( $post_id );
$subject = 'New Post';
$message = "A new post came out:\n\n";
$message .= $post->post_title . ": " . $post_url;
wp_mail( 'email', $subject, $message );
}
}
}
}
add_action( 'transition_post_status', 'post_unpublished', 10, 3 );