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

时间:2017-10-05 10:09:41

标签: php wordpress

我想在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 个答案:

答案 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