如何在wp-Options中删除数组中的孤立用户数据

时间:2013-10-26 作者:mantis

我有一个选项,订阅论坛电子邮件通知的成员。电子邮件列表作为选项值位于一个数组中。一切正常,所有订阅和取消订阅都使用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 或者我应该?

1 个回复
最合适的回答,由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 此处不需要的函数。

结束

相关推荐

在wp_Options的一个设置字段中可以存储的选项数量是否有限制?

我有一个带有选项页的主题。在这一页上有1083个选项。我注意到最后13个没有保存。它们一度保存了,但在我添加了新选项之后,它们停止了工作。我怀疑我可能遇到了某种选项限制或阵列上的限制,为了测试这一点,我删除了最后13个选项上方的7个选项,并确保在这之后保存了足够多的7个选项。我一直在试图找到有关这方面的信息,但一直无法找到。是否有人知道您在一个设置字段中只能有1070个选项?这不是数据库长文本内存限制的问题。这些是简单的1和0以及十六进制颜色值和其他CSS类型的内容。该字段的输出量仅为33k。