联属推荐系统的WordPress插件

时间:2011-03-30 作者:Permana

我想在WordPress上创建一个附属系统。我的意思是当“成员A”通过使用邀请其他人加入(例如“成员B”)时?referralId=成员A查询字符串,然后成员A获得积分或积分,当成员B邀请成员C时,成员B获得积分。有任何WordPress插件可以做到这一点吗?

我已经尝试了Affiliate Pro Plus(http://wordpress.org/extend/plugins/affiliate-pro-plus/)但这并不像预期的那样有效。当我尝试使用会员A的转介注册会员B时,会员B不算作会员A下线。

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

不了解插件,但只需使用两个钩子和回调函数即可轻松实现:首先,使用register_form 挂钩:

add_action(\'register_form\',\'show_reff_field\');
function show_reff_field(){ ?>
    <input id="ref" type="text" tabindex="20" size="25" value= "<?php if (isset($_GET[\'ref\'])){echo $_GET[\'ref\'];} ?>"  name="ref" readonly="readonly"/>
<?php
}
那么您只需要使用user_register

add_action(\'user_register\', \'register_refferal\');

function register_refferal($user_id) {
   $userdata = array();
   $userdata[\'ID\'] = $user_id;
   wp_update_user($userdata);
   $userdata[\'ref\'] = $_POST[\'ref\'];

   if (isset($userdata[\'ref\'])  && !empty($userdata[\'ref\']) && $userdata[\'ref\'] != ""){
        //get reffering user id by his login
        $refuser = get_user_by(\'login\',$userdata[\'ref\']);
        //get current refferial credit that user has
        $current_ref_credit = get_user_meta($refuser->ID, \'ref_credit\', true);
        //add credit for the newly created user
        $current_ref_credit[] = $user_id;
        //save the changes
        update_user_meta( $refuser->ID, \'ref_credit\', $current_ref_credit);
   }
}
所以,剩下要做的就是让您的用户共享那里的推荐链接:

http://example.com/wp-login.php?action=register&ref=my_login_name
因此,如果我的用户名是“bainternet”,那么我的推荐链接将是:

http://example.com/wp-login.php?action=register&ref=bainternet
要查看用户下行链路中有多少成员,这里有一个简单的函数,它接受用户ID并返回他引用的用户ID数组:

function get_user_downline($user_id){
    return $current_ref_credit = get_user_meta($user_id, \'ref_credit\', true);
}
其用法很简单:

// to echo count of how many user with ID of 24 as reffered:
echo count(get_user_downline(24));

    // to list the users user with ID of 24 as reffered:
<ul>
<?php
    $reffed = get_users(array(\'orderby\' => \'registered\', \'include\' =>  get_user_downline(24));
    foreach ($blogusers as $user) {
        echo \'<li>\' . $user->display_name . \'</li>\';
    }
?>
</ul>
所以只要复制所有这些代码,就有了一个转诊系统插件

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?