我想做的是,当一位议员在修改表格后“续期”时,他的届满日期是加1年,而不论他何时续期。成员总是在4月30日到期,所以我只需要增加一年,使之成为2014年4月30日、2015年4月30日,等等。
所以用下面的钩子
add_action('ws_plugin__s2member_during_paypal_notify_during_subscr_modify', 'update_s2_EOT');
add_action('ws_plugin__s2member_during_paypal_notify_during_subscr_signup_w_update_vars', 'update_s2_EOT');我在做
function update_s2_EOT($vars = array()) {
$user_id = $vars['user_id'];
$existing_eot_time = get_user_field('s2member_auto_eot_time', $user_id);
$new_eot_time = $existing_eot_time;
update_user_option ($user_id, 's2member_auto_eot_time', $new_eot_time);
}很明显,这并没有增加一年的时间,但这只是一个例子。我能够获得user_id,但是EOT变量始终是空的,所以在函数运行后,它会将用户的EOT设置为空。
为什么get_user_field(‘s2Members_auto_eot_time’,$user_id);返回为空?(我可以确认$user_id已经设置)。
发布于 2013-12-11 21:10:33
因为我从来无法从任何钩子中获得现有的EOT值,所以我做了一些更多的研究,结果发现您可以通过proform的简短代码来完成这一切。
例如
短代码中的rp="“值将将"x”天附加到当前年度的末尾,因此,如果您只想添加1年,则可以使用rp="365“。
所以,如果你需要一个月中的某一天,比如4月30日,你只需要做一些日期计算,就可以根据当前为用户设置的EOT计算出4月30日之前的几天。
https://stackoverflow.com/questions/20474145
复制相似问题