WP-与用户和自定义类型共享分类法



我想为WordPress管理面板中的用户进行自定义分类。因此,例如,用户可以具有regiondepartmentrolecompany等分类法。我已经制作了用户类别的帖子类型,管理员可以在其中为用户创建这种分类法。

<?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');

但是,我想知道如何在管理面板中的编辑用户页面上获取这些分类法?

选项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/questions/10566/is-is-possible-to-add-taxonomies-to-user-profileshttps://wordpress.stackexchange.com/questions/6163/commenting-in-user-profile-page/6165#6165

最新更新