我想在Wordpress管理面板中为用户制作自定义分类。因此,例如,用户可以使用region
,department
,role
,company
等分类法。我已经制作了用户类别的帖子类型,管理员可以为用户创建此类分类。
<?php
add_action('init', function() {
register_post_type('intranet-categories', [
'labels' => [
'name' => 'Bruker kategori',
'singular_name' => 'Bruker kategori',
'menu_name' => 'Bruker kategori',
'name_admin_bar' => 'Bruker kategori',
'add_new' => 'Legg til ny',
'add_new_item' => 'Ny Bruker kategori',
'new_item' => 'Ny Bruker kategori',
'edit_item' => 'Rediger Bruker kategori',
'view_item' => 'Vis Bruker kategori',
'all_items' => 'Alle Bruker kategorier',
'search_items' => 'Søk',
'parent_item_colon' => 'Forelder',
'not_found' => 'Fant ingen Bruker kategori.',
'not_found_in_trash' => 'Fant ingen Bruker kategori i søppelkassen.',
],
'description' => 'Bruker kategori',
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => ['slug' => 'intranet-post'],
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'menu_icon' => 'dashicons-editor-ol',
'supports' => ['title', 'editor', 'excerpt', 'thumbnail'],
]);
});
然后我注册了分类标准并与intranet-post
和users
分享。
register_taxonomy('department', ['intranet-categories', 'intranet-post'], [
'labels' => [
'name' => 'Avdeling',
'singular_name' => 'Avdeling',
'search_items' => 'Søk',
'all_items' => 'Alle avdelinger',
'parent_item' => 'Forelder',
'parent_item_colon' => 'Forelder',
'edit_item' => 'Rediger avdeling',
'update_item' => 'Oppdater avdeling',
'add_new_item' => 'Opprett avdeling',
'new_item_name' => 'Ny avdeling',
'menu_name' => 'Avdelinger',
],
'hierarchical' => true,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'avdeling'],
]);
register_taxonomy('region', ['intranet-categories', 'intranet-post'], [
'labels' => [
'name' => 'Region',
'singular_name' => 'Region',
'search_items' => 'Søk',
'all_items' => 'Alle region',
'parent_item' => 'Forelder',
'parent_item_colon' => 'Forelder',
'edit_item' => 'Rediger Region',
'update_item' => 'Oppdater Region',
'add_new_item' => 'Opprett Region',
'new_item_name' => 'Ny Region',
'menu_name' => 'Regioner',
],
'hierarchical' => true,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'avdeling'],
]);
register_taxonomy('industry', ['intranet-categories', 'intranet-post'], [
'labels' => [
'name' => 'Bransje',
'singular_name' => 'Bransje',
'search_items' => 'Søk',
'all_items' => 'Alle bransjer',
'parent_item' => 'Forelder',
'parent_item_colon' => 'Forelder',
'edit_item' => 'Rediger bransje',
'update_item' => 'Oppdater bransje',
'add_new_item' => 'Opprett bransje',
'new_item_name' => 'Ny bransje',
'menu_name' => 'Bransjer',
],
'hierarchical' => true,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'bransje'],
]
);
register_taxonomy('role', ['intranet-categories', 'intranet-post'], [
'labels' => [
'name' => 'Rolle',
'singular_name' => 'Rolle',
'search_items' => 'Søk',
'all_items' => 'Alle roller',
'parent_item' => 'Forelder',
'parent_item_colon' => 'Forelder',
'edit_item' => 'Rediger rolle',
'update_item' => 'Oppdater rolle',
'add_new_item' => 'Opprett rolle',
'new_item_name' => 'Ny rolle',
'menu_name' => 'Roller',
],
'hierarchical' => true,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'rolle'],
]
);
register_taxonomy('company', ['intranet-categories', 'intranet-post'], [
'labels' => [
'name' => 'Selskap',
'singular_name' => 'Selskap',
'search_items' => 'Søk',
'all_items' => 'Alle selskaper',
'parent_item' => 'Forelder',
'parent_item_colon' => 'Forelder',
'edit_item' => 'Rediger selskap',
'update_item' => 'Oppdater selskap',
'add_new_item' => 'Opprett selskap',
'new_item_name' => 'Ny selskap',
'menu_name' => 'Selskaper',
],
'hierarchical' => true,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'selskap'],
]
);
我还设法在管理菜单中为用户添加了分类,如下所示:
function add_user_taxonomy_admin_page() {
$categories = get_object_taxonomies('intranet-categories');
foreach($categories as $category) {
$tax = get_taxonomy($category);
if (!is_object($tax) OR is_wp_error($tax))
return;
add_users_page(
esc_attr( $tax->labels->menu_name ),
esc_attr( $tax->labels->menu_name ),
$tax->cap->manage_terms,
'edit-tags.php?taxonomy=' . $tax->name
);
}
}
add_action( 'admin_menu', 'add_user_taxonomy_admin_page');
但是,我想知道如何在管理面板中的编辑用户页面上获取这些分类?
答案 0 :(得分:0)
选项1:从2.3开始,就可以为任何对象类型创建分类,而不仅仅是帖子。在WordPress中,有几种对象类型,如帖子,用户,评论和链接。 Justin Tadlock(大WP参考)处理同样的问题。 http://justintadlock.com/archives/2011/10/20/custom-user-taxonomies-in-wordpress
选项2:如果您的意思是https://wordpress.stackexchange.com/questions/10566/is-it-possible-to-add-taxonomies-to-user-profiles,那么答案就在这里 https://wordpress.stackexchange.com/questions/6163/commenting-in-user-profile-page/6165#6165