我创建了一个功能,可以自动将具有参与者角色的用户添加到一个列表中,在该列表中,他们将通过电子邮件接收论坛(修改后的mingleforum插件)更新。我的问题是,“is\\u player\\u subscribed()”函数调用的函数似乎工作不正常,因为它每次用户注册时都会有效地添加整个列表。
add_action( \'user_register\', \'call_forum_subscribe_member_player\' );
function forum_subscribe_member_player()
{
$players= get_users();
foreach($players as $player)
{
$user_info = get_userdata($player->ID);
$playeremail = $user_info->user_email;
if(!empty($playeremail) && user_can( $player-> ID, \'contributor\'))
{
$list = (array)get_option(\'mf_forum_subscribers_1\');
if( is_player_subscribed($player->ID)) //remove player if already exists (user clicked unsubscribe)
{
$key = array_search($playeremail, $list);
unset($list[$key]);
}
else
$list[] = $playeremail;
update_option(\'mf_forum_subscribers_1\', $list);
}
}
}
function is_player_subscribed($user_ID)
{
if($user_ID)
{
$useremail = get_userdata($user_ID, \'user_email\');
$list = (array)get_option(\'mf_forum_subscribers_1\');
if(!empty($list) && in_array($useremail, $list))
{
return true;
}
return false;
}
}
function call_forum_subscribe_member_player()
{
forum_subscribe_member_player();
}
我试图确定为什么它似乎忽略了第二个函数,并猜测它与$user_ID
参数我将非常感谢更有经验的眼睛看看。我应该注意到,该函数是从插件中的函数改编而来的,插件中的函数也修改了相同的选项。如果有人好奇或需要更多信息来回答问题,我会将gist中使用的类和修改后的代码放在一个单独的文件中:gist
编辑:var dump$list after$list = (array)get_option(\'mf_forum_subscribers_1\');
给我:
array(1) { [0]=> string(2) " " }
array(2) { [0]=> string(2) " "
[1]=> string(13) "name@name.com" }
array(3) { [0]=> string(2) " "
[1]=> string(13) "name@name.com"
[2]=> string(15) "name2@name2.com" }
array(4) { [0]=> string(2) " "
[1]=> string(13) "name@name.com"
[2]=> string(15) "name2@name2.com"
[3]=> string(15) "name3@name3.com" }
等等等等。。。当我进去看的时候wp_options
我明白了a:41:{i:0;s:2:
这与贡献者的数量加上一个相吻合。