2017-10-05 59 views
0

我想为WordPress管理面板中的用户制作自定义分类法。因此,例如,用户可以拥有分类标准,如region,department,role,company。我制作了发布类型的用户类别,其中管理员可以为用户创建此类分类。WP - 与用户共享分类法和自定义类型

<?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-postusers

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

选项1:从2.3开始,可以为任何对象类型创建分类,而不仅仅是发布。在WordPress中,有几种对象类型,如帖子,用户,评论和链接。贾斯汀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