Skip to content
Advertisement

Add custom taxonomy to my custom posts type wordpress

I’ve been trying to add a custom posts type to my wordpress page but its not showing up.

What am I doing wrong?

It feels like its only a small thing but I’m not seeing it as I me fairly new to the custom posts type’s.

What I want is to create pages for the teams at our company where we can showcase all our members

<?php

function mon_register_post_type() {
  $labels = array(
      'name' => __( 'Teams' ),
      'singular_name' => __( 'Team' ),
      'add_new' => __( 'Add new'),
      'add_new_item' => __( 'Add New member'),
      'edit_item' => __( 'Edit member'),
      'new_item' => __( 'New member'),
      'view_item' => __( 'View members'),
      'search_items' => __( 'Search members'),
      'not_found' =>  __( 'No memebers Found' ),
      'not_found_in_trash' => __( 'No members found in Trash' )
  );
  $args = array(
      'labels' => $labels,
      'has_archive' => true,
      'public' => true,
      'hierarchical' => true,
      'public'              => true,
      'show_ui'             => true,
      'show_in_menu'        => true,
      'show_in_nav_menus'   => true,
      'show_in_admin_bar'   => true,
      'menu_position'       => 5,
      'can_export'          => true,
      'exclude_from_search' => false,
      'publicly_queryable'  => true,
      'show_in_rest' => true,
      'supports' => array('title','editor', 'excerpt', 'custom-fields', 'thumbnail', 'page-attributes'),
      'taxonomies' => array( 'teams' ),
      'rewrite'   => array( 'slug' => 'member' ),
  );
  register_post_type( 'mon_member', $args );

  register_taxonomy('teams', ['team'], [
        'label' => __('Teams', 'txtdomain'),
        'hierarchical' => true,
        'rewrite' => ['slug' => 'team'],
        'show_admin_column' => true,
        'show_in_rest' => true,
        'labels' => [
            'singular_name' => __('Team', 'txtdomain'),
            'all_items' => __('All Teams', 'txtdomain'),
            'edit_item' => __('Edit Team', 'txtdomain'),
            'view_item' => __('View Team', 'txtdomain'),
            'update_item' => __('Update Team', 'txtdomain'),
            'add_new_item' => __('Add New Team', 'txtdomain'),
            'new_item_name' => __('New Genre Team', 'txtdomain'),
            'search_items' => __('Search Teams', 'txtdomain'),
            'parent_item' => __('Parent Teams', 'txtdomain'),
            'parent_item_colon' => __('Parent Team:', 'txtdomain'),
            'not_found' => __('No Teams found', 'txtdomain'),
        ]
    ]);
    register_taxonomy_for_object_type('teams', 'team');
}
add_action( 'init', 'mon_register_post_type' );
?>

Advertisement

Answer

The way i always do it is this way, register the custom post type as you already have done

   register_post_type( 'magazines',
    // CPT Options
    array(
        'labels' => array(
         'name' => __( 'Magazines' ),
         'singular_name' => __( 'magazines' ),
         'archives' => __( 'magazines' ),
        ),
        'public' => true,
        'has_archive' => true,
        'show_in_rest' => true,
        'rewrite' => array('slug' => 'magazines'),
        'show_in_nav_menu' => true,
        'menu_position' => 9,
        'supports' => array('title', 'editor', 'thumbnail', 'author'),
     )
    );

and then the taxonomy register like this

function magazine_type_taxonomy() {
    $labels = array(
        'name'                       => _x( 'Magazine Categories', 'magazine-taxonomy', 'text_domain' ),
        'singular_name'              => _x( 'Magazine Categories', 'magazine-taxonomy', 'text_domain' ),
        'menu_name'                  => __( 'Magazine Categories', 'text_domain' ),
        'all_items'                  => __( 'All Items', 'text_domain' ),
        'parent_item'                => __( 'Parent Item', 'text_domain' ),
        'parent_item_colon'          => __( 'Parent Item:', 'text_domain' ),
        'new_item_name'              => __( 'New Item Name', 'text_domain' ),
        'add_new_item'               => __( 'Add New Item', 'text_domain' ),
        'edit_item'                  => __( 'Edit Item', 'text_domain' ),
        'update_item'                => __( 'Update Item', 'text_domain' ),
        'view_item'                  => __( 'View Item', 'text_domain' ),
        'add_or_remove_items'        => __( 'Add or remove items', 'text_domain' ),
        'choose_from_most_used'      => __( 'Choose from the most used', 'text_domain' ),
        'popular_items'              => __( 'Popular Items', 'text_domain' ),
        'search_items'               => __( 'Search Items', 'text_domain' ),
        'not_found'                  => __( 'Not Found', 'text_domain' ),
        'no_terms'                   => __( 'No items', 'text_domain' ),
        'items_list'                 => __( 'Items list', 'text_domain' ),
        'items_list_navigation'      => __( 'Items list navigation', 'text_domain' ),
    );

    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
        'show_in_rest'               => true,
        'rest_base'                  => 'mag_type',
        'rest_controller_class'      => 'WP_REST_Terms_Controller',
    );

    register_taxonomy( 'magazine-taxonomy', array( 'magazines', 'digital'), $args );
}
add_action( 'init', 'magazine_type_taxonomy', 0 );

Notice how i am assigning the custom post type in the taxonomy not in the actual post type itself

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement