获取当前自定义用户分类

时间:2013-05-15 作者:talven

我正在使用插件User Groups 这让我可以使用类别对用户进行分组。该插件的工作原理与使用手动方法(自定义用户分类法)的工作原理基本相同Justin Tadlock here.

关于作者。php我想列出当前查看的用户所属的分类法,每个列表项都应该链接到分类法术语页面。

我使用以下代码获取当前用户ID并从配置文件页面检索自定义字段值:

<?php // Get current author

$curauth = (isset($_GET[\'author_name\'])) ? get_user_by(\'slug\', $author_name) : get_userdata(intval($author));

?>
我使用以下代码列出自定义用户分类:

<?php // List custom user taxonomies

wp_list_categories(\'taxonomy=user-group\');

?>
“taxonomy=user group”正在获取插件中创建的所有术语。

Here’s a way 获取当前的post分类法,但我希望将其更改为自定义用户分类法。

是否有办法更改wp\\u list\\u categories()以仅显示所需的分类?我应该寻找另一种方法吗?

2 个回复
SO网友:kruti

尝试以下建议:

$user_id = get_current_user_id();  // Get current user Id
$user_groups = wp_get_object_terms($user_id, \'user-group\', array(\'fields\' => \'all_with_object_id\'));  // Get user group detail
foreach($user_groups as $user_gro)
{
    echo $user_gro->name; // Get current user group name
    echo $user_gro->taxonomy; // get current user taxonomy 
}

SO网友:talven

好的,问题解决了。我放弃了插件,换了一个叫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.

结束

相关推荐

Custom taxonomy in short code

我在网格显示的主题中使用短代码。代码仅考虑类别ID。我还想添加自定义分类法,以便将输出作为分类帖子和自定义分类帖子。 function five_col( $atts ) { extract( shortcode_atts( array( \'cats\' => \'1\', \'num\' => \'2\', \'offset\' => \'0\', ), $atts ) );