如何将用户对象与分类术语相关联?

时间:2017-07-16 作者:Robert Andrews

我正在尝试导入几个用户,每个用户都应该与名为“firm”的分类法中的一个术语有关联,但我不知道如何建立连接。。。

Background:

仅供参考,我已经为使用插件的用户启用了WordPress分类法支持LH User Taxonomies, 分类法“公司”已经注册。我正在使用插件导入WPAllImport.

通过之前的WPAllImport进口创建了65个“公司”术语。术语段塞在入站公司名称字段上进行了文本处理$companystrip spaces and convert to lowercase, 以创建一个干净的术语段塞。

所有这些都已设置好,问题不在于为用户启用分类支持。

The problem:

我现在正在导入许多用户,需要将他们连接到现有的“公司”术语(即他们工作的公司)。不幸的是,WPAllImport不支持为用户导入分类术语,但它支持在每次用户导入时执行的PHP函数,以及像pmxi\\u after\\u xml\\u import这样的操作,这些操作在导入后激发。

匹配的最佳方式似乎是通过slug,即匹配入站用户字段$company, 剥离空间后,针对“固定”术语,使用匹配的唯一段塞。但是我如何做到这一点,然后我们如何在数据库中建立关联?

在每个单独的用户导入上,逻辑可能如下所示:

识别入站字符串$company$company 使用my小写convert_company_name() 功能$company 字符串(例如“widgetsinc”表示用户的已处理$company, 匹配“widgetsinc”术语slug)将此用户与该slug关联,即设置术语我不确定如何为此编写任何代码。

wp set object terms 看起来可能有关系?

Edit (2):

我想我在这里学到了很多。在某种程度上,这似乎是可行的。。。

// Relate user to "firm" taxonomy terms
function relate_user_to_firm($company, $username){

  // convert company name to slug format
  $company_slug = lowercase_and_strip($company);

  // use slug to find corresponding taxonomy term
  $term = get_term_by(\'slug\', $company_slug, \'firm\');
  // get the object id of this term
  $mytermid = $term->term_id;

  // get user\'s ID
  $user = get_user_by(\'login\', $username);
  $user_id = $user->ID;

  // *** relate user to this term ***
  wp_set_object_terms( $user_id, $mytermid, \'firm\' );

}
问题是,虽然我的用户列表页面上的“公司”栏下显示了正确的术语,但公司列表页面上的实际术语中的用户计数没有更新,它仍然显示为0。那里发生了什么事?

2 个回复
SO网友:Yaakov Aglamaz

wp\\u set\\u object\\u terms函数与对象(帖子、页面等)相关。您最好使用usermeta-update\\u usermeta。E、 g级update_usermeta( $user_id, \'company\', $company_id );

Wordpress由两个主要的数据库表(wp\\u posts和wp\\u users)和两个元数据表(wp\\u postemta和wp\\u usermeta)构建。似乎术语表(wp\\U术语和其他)与wp\\U帖子相关。

我处理相同的需求(将用户与公司联系起来)。我想使用术语,但我将使用usermeta。

SO网友:Mark Kaplun

用户是具有一定管理权限的人(或人的扩展),分类法用于对内容进行“分类”,人不是内容。换句话说,如果您觉得需要将分类法与用户相关联,那么您可能做错了什么,或者至少是可疑的。

用户和内容之间应该存在的唯一关联是确定用户是否可以编辑该内容所需的任何设置,但听起来您似乎试图用分类法对用户进行“分类”,这是错误的。

结束

相关推荐

在前端更新/保存wp_Terms_Checklist生成的项目

我在一个前端页面上显示了自定义帖子类型的自定义分类列表,其中显示了用户以前选中的所有项目。我已将其正确显示,但我无法确定如何保存任何新的/更改的选择。这是我用来显示术语的代码:$args = array( \'descendants_and_self\' => 0, \'selected_cats\' => false, \'popular_cats\' => false, \'walke