Wordpress获得用户元功能

时间:2016-02-19 15:31:04

标签: php wordpress function wordpress-plugin

我使用几个插件与我们的LDAP / AD服务器集成 - 该插件在成功验证/创建wp用户时添加了一些用户元数据。我也使用Ultimate Members插件来控制角色等。

我需要做的是确保任何登录ldap信用卡的人都被分配了ldap UM角色。所以这是我到目前为止获得的PHP。

global $ultimatemember;
global $user_ID;
$key = 'ad_integration_account_suffix';
$single = true;
$ldap_user=get_user_meta( $user_ID, $key, $single ); // core WP coe to get a users meta info - we are assigning it a variable
echo '<p>The '. $key . ' value for user id ' . $user_ID . ' is: ' . $ldap_user . '</p>'; // some debug stuff - take this out
um_fetch_user( $user_ID ); // set UM user id to retrieve
   if($ldap_user !== '')  { // if the ldap user key is not null then its populated and thus this user is a member of AD
 $ultimatemember->user->set_role('ldap_user'); // so set the UM user to be a member of the ldap_user role/group.
    } 

现在,我认为上面有一些问题,即我认为它还需要包含在一个函数中?我在哪里粘贴这个php片段,以便在登录时调用?我也可能首先检查用户是否已经在ldap_user组中,如果是,我们不需要继续其余的检查/设置等。

2 个答案:

答案 0 :(得分:0)

我建议您创建自己的插件来处理您的LDAP功能。使用它,使用wp_login挂钩在登录时触发代码。

如果您从未在Wordpress中创建过插件,请按以下几个步骤操作:

  1. wp-content/plugins/中创建一个文件夹 - 让我们称之为ldap-authentication
  2. 在里面,创建一个新的PHP文件(让我们称之为ldap-authentication.php)并在顶部添加以下注释:

    /*
     Plugin Name: LDAP Authentication
     Version: 1.0
     Description: Performs LDAP authentication
     Author: Tony
     */
    
  3. 在您的扩展程序页面中启用此插件
  4. 要挂钩wp_login,请执行以下操作(我更改了一些代码以反映WP_User对象的使用):

    function my_ldap_authentication($login, $user) {
        global $ultimatemember;
        global $user_ID;
        $key = 'ad_integration_account_suffix';
        $single = true;
        $ldap_user = get_user_meta($user->ID, $key, $single);
        um_fetch_user($user->ID);
        if($ldap_user !== '')  {
            $ultimatemember->user->set_role('ldap_user');
        } 
    }
    add_action('wp_login', 'my_ldap_authentication', 10, 2);
    

    如果您想知道用户是否在ldap_user群组中,您可以使用以下内容:

    if(in_array('ldap_users', $user->roles)) {
        // is an ldap user
    }
    

答案 1 :(得分:0)

您也可以查看Gravity Forms插件(注册添加)。这样您就可以拥有一个注册表单,可以在站点的前端分配所有自定义角色。以及用户编辑其配置文件的能力(也在前端)。

我已经建立了几个带有保护区的会员网站,我们使用了重力形式插件来处理注册,以及Justin Tadlock的会员插件来处理角色/功能新用户