我有一个选项,订阅论坛电子邮件通知的成员。电子邮件列表作为选项值位于一个数组中。一切正常,所有订阅和取消订阅都使用update_option();
我的问题是,如果一个用户被删除,不进入数据库就很难取消他的订阅。所以我认为这个函数可以做到这一点,但我肯定遗漏了什么:
add_action( \'delete_user\', \'forum_remove_deleted_user\' );
function forum_remove_deleted_user($user_id)
{
$user_obj = get_userdata($user_id);
$subscbr_email = $user_obj->user_email;
if(!empty($subscbr_email)) {
$list = (array)get_option(\'mf_forum_subscribers_1\');
if(!empty($list) && is_subscribed($subscbr_email)) {
$key = array_search($subscbr_email, $list);
unset($list[$key]);
}
}
}
function is_subscribed($subscbr_email)
{
if($subscbr_email )
{
$list = (array)get_option(\'mf_forum_subscribers_1\');
if(in_array($subscbr_email , $list)) {
return true;
}
return false;
}
}
我很想知道我做错了什么。否则我想我可以
$wpdb
或者我应该?
最合适的回答,由SO网友:gmazzap 整理而成
如果发布的是您正在使用的所有代码,则可以使用unset
, 但您不会再次将数组保存到数据库中:
add_action( \'delete_user\', \'forum_remove_deleted_user\' );
function forum_remove_deleted_user($user_id) {
$user_obj = get_userdata($user_id);
$subscbr_email = $user_obj->user_email;
if( ! empty( $subscbr_email ) ) {
$list = (array) get_option(\'mf_forum_subscribers_1\');
if( ! empty($list) && ( false !== array_search($subscbr_email, $list) ) ) {
$key = array_search( $subscbr_email, $list );
unset( $list[$key] );
update_option(\'mf_forum_subscribers_1\', $list); // you miss this part
}
}
}
为了简单起见,我从
is_subscribed
此处不需要的函数。