在查看了插件的代码之后,似乎没有一种简单的方法可以做到这一点。
附属机构存储在一个与WP users表没有直接关系的表中-这意味着您可以拥有非附属机构的用户,也可以拥有非用户的附属机构。这就是为什么有一个大的;“导入WP用户”;选项这不是自动的。
当分支机构登录时,会有代码自动启动PHP会话,将其分支机构ID存储为会话变量,并将其设置为cookie,以便稍后检索:
global $wpdb;
$affiliates_table_name = WP_AFF_AFFILIATES_TABLE;
$result = $wpdb->get_row("SELECT * FROM $affiliates_table_name where refid=\'$userid\'", OBJECT);
if($wp_hasher->CheckPassword($password, $result->pass))
{
// this sets session and logs user in
if(!isset($_SESSION)){@session_start();}
// this sets variables in the session
$_SESSION[\'user_id\']= $userid;
setcookie("user_id", $userid, time()+60*60*6, "/"); //set cookie for 6 hours
// ... and so on
}
目前,该插件根本没有使用WordPress的用户管理系统。
总结
您看到的关联id与系统中的用户名不同,并且您无法运行查询,根据关联id从WordPress的用户表中提取用户名/id(反之亦然),因为系统中任何地方都没有与这两者相关的数据。
获取分支机构ID如果用户已登录,则只需获取分支机构ID,则只需查看cookie集合或当前会话:
function get_current_affiliate_id() {
$affiliate_id = false;
if ( isset( $_SESSION ) && isset( $_SESSION[\'user_id\'] )
$affiliate_id = $_SESSION[\'user_id\'];
if ( ! $affiliate_id && isset( $_COOKIE[\'user_id\'] ) )
$affiliate_id = $_COOKIE[\'user_id\'];
return $affiliate_id;
}
如果用户已登录,则应同时设置会话变量和cookie。然后,此函数将返回用户ID(如果服务器端会话出现问题,即有人在使用站点时服务器重新启动,则cookie检查只是一种回退)。如果用户未登录,该功能将返回
false
.
一旦你有了他们的ID,你就可以使用插件附带的其他功能来获取你需要的任何信息。