Wordpress показывает теги, принадлежащие пользовательскому типу записи

Я создал пользовательский тип записи под названием «портфолио» и добавил столбец тегов в редактор, используя:

register_taxonomy_for_object_type( 'post_tag', 'portfolio'  );

После того, как я добавил виджет тегов на боковую панель, он показывает все теги из всех моих сообщений. Как я могу показать теги, которые относятся только к типу записи «портфолио»?

Также есть ли способ изменить имя по умолчанию «Теги» для типа публикации портфолио на «Теги портфолио»?


person CyberJunkie    schedule 05.11.2014    source источник
comment
Почему бы вам не зарегистрировать новую пользовательскую таксономию (неиерархическую) с помощью register_taxonomy() для свое портфолио вместо использования родного post_tag?   -  person birgire    schedule 08.11.2014
comment
Да, объяснение почему вы хотите сделать это вместо создания новой таксономии, было бы полезно найти правильное решение.   -  person brasofilo    schedule 08.11.2014


Ответы (1)


Вероятно, самым простым способом добиться этого было бы создание пользовательской таксономии. Это также единственный способ изменить название ваших тегов на теги портфолио.

Для этого вы можете использовать register_taxonomy():

// Register Custom Taxonomy
function portfolio_tags_taxononmy() {

    $labels = array(
        'name'                       => 'Portfolio Tag',
        'singular_name'              => 'Portfolio Tag',
        'menu_name'                  => 'Portfolio Tags',
        'all_items'                  => 'All Portfolio Tags',
        'parent_item'                => 'Parent Portfolio Tag',
        'parent_item_colon'          => 'Parent Portfolio Tag:',
        'new_item_name'              => 'New Portfolio Tag',
        'add_new_item'               => 'Add New Portfolio Tag',
        'edit_item'                  => 'Edit Portfolio Tag',
        'update_item'                => 'Update Portfolio Tag',
        'separate_items_with_commas' => 'Separate Portfolio Tags with commas',
        'search_items'               => 'Search Portfolio Tags',
        'add_or_remove_items'        => 'Add or remove Portfolio Tags',
        'choose_from_most_used'      => 'Choose from the most used Portfolio Tags',
        'not_found'                  => 'Not Found',
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => false,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'portfolio-tags', array( 'portfolio' ), $args );

}

// Hook into the 'init' action
add_action( 'init', 'portfolio_tags_taxononmy', 0 );

Теперь вы можете использовать «теги портфолио» вместо «post_tag»:

register_taxonomy_for_object_type( 'portfolio-tags', 'portfolio' );

Чтобы создать облако тегов, вы можете использовать wp_tag_cloud():

wp_tag_cloud( array( 'taxonomy' => 'portfolio-tags' ) );
person baltpeter    schedule 08.11.2014
comment
Кстати: вы можете использовать generatewp.com, чтобы легко сгенерировать соответствующий код: generatewp.com/taxonomy - person baltpeter; 08.11.2014
comment
Спасибо за подробное объяснение! Код работает отлично! - person CyberJunkie; 10.11.2014