好的,问题解决了。我放弃了插件,换了一个叫User Taxonomies. 它完成了创建自定义分类法(保存字段等)的所有枯燥部分,您也可以自己编写,但我想保持代码的整洁。
安装插件后,我按照插件页面上的描述手动注册了自定义分类法,但添加了hierarchy => true
使分类法像类别一样工作,而不是像标记一样工作。为了允许在配置文件页面上进行多重选择,我将此代码添加到插件文档用户分类中。php:
<input type="checkbox" name="<?php echo $key?>[]" id="<?php echo "{$key}-{$term->slug}"?>" value="<?php echo $term->slug?>" <?php checked(true, is_object_in_term($user->ID, $key, $term))?> />
然后,我必须使用此函数更改字段的保存(添加到同一文件:
/**
* Save the custom user taxonomies when saving a users profile
*
* @param Integer $user_id - The ID of the user to update
*/
public function save_profile($user_id) {
foreach(self::$taxonomies as $key => $taxonomy) {
// Check the current user can edit this user and assign terms for this taxonomy
if(!current_user_can(\'edit_user\', $user_id) && current_user_can($taxonomy->cap->assign_terms)) return false;
// Save the data
$user_terms = ! is_array($_POST[$key]) ? array($_POST[$key]) : $_POST[$key];
wp_set_object_terms($user_id, $user_terms, $key, false);
clean_object_term_cache($user_id, $key);
}
}
为了显示用户所属的分类术语,我使用了以下代码段:
<?php the_terms( $curauth->ID, \'NAME-OF-TAXONOMY\');?></p>
希望这对别人有帮助。
Credit goes to Timothy Wood and benjaminniess.