我目前正在调整一个插件,以便所有“贡献者”(这里称为“玩家”)自动订阅论坛。我基本上想订阅每个人的贡献者和以上的角色(我使用user\\u级别,因为插件的其余部分是这样的,我认为我应该保持一致。)
function forum_subscribe_member_player()
{
$players= get_users();
foreach($players as $player){
$playeremail = get_userdata($player->ID, \'user_email\');
if(!empty($playeremail) && $player->user_level >= 1)
{
$list = get_option("mf_forum_subscribers_1", array());
if( is_player_subscribed($player->ID)) //remove user if already exists (user clicked unsubscribe)
{
$key = array_search($playeremail, $list);
unset($list[$key]);
}
else
$list[] = $playeremail;
update_option("mf_forum_subscribers_1", $list);
}
}
}
它不起作用,我猜这是一个问题
$player->is_player_subscribed()
这里是:
function is_player_subscribed($user_ID)
{
if($user_ID)
{
$useremail = get_userdata($user_ID, \'user_email\');
$list = get_option("mf_forum_subscribers_1", array());
if(in_array($useremail, $list)){
return true;
}
return false;
}
}
使用
global $user_ID
而不是
get_users()
我希望在这方面能得到一些帮助,甚至能指出正确的方向。
编辑:基于@murdaugh的评论
最合适的回答,由SO网友:murdaugh 整理而成
这是我对OP评论的扩展:
function is_forum_subscribed($user_ID) {
if($user_ID)
{
$useremail = $this->get_userdata($user_ID, \'user_email\');
$list = get_option("mf_forum_subscribers_".$this->current_forum, array());
if(in_array($useremail, $list))
return true;
}
return false;
}
}
您可以这样调用此函数:
is_forum_subscribed($player->ID);