1

I presume this is a scenario where I've overlooked something in syntax, or a basic setting. But I've looked it over so many times I need fresh eyes.

I have the following code which adds a Product CPT, then a Product Group taxonomy (tag), and a Product Category taxonomy.

The Products and Product Group show in Appearance > Menus, Product Category does not. Help?

// Register Custom Post Type
function products_post_type() {

    $labels = array(
        'name'                  => _x( 'Products', 'Post Type General Name', 'text_domain' ),
        'singular_name'         => _x( 'Product', 'Post Type Singular Name', 'text_domain' ),
        'menu_name'             => __( 'Products', 'text_domain' ),
        'name_admin_bar'        => __( 'Product', 'text_domain' ),
        'archives'              => __( 'Item Archives', 'text_domain' ),
        'attributes'            => __( 'Item Attributes', 'text_domain' ),
        'parent_item_colon'     => __( 'Parent Product:', 'text_domain' ),
        'all_items'             => __( 'All Products', 'text_domain' ),
        'add_new_item'          => __( 'Add New Product', 'text_domain' ),
        'add_new'               => __( 'New Product', 'text_domain' ),
        'new_item'              => __( 'New Item', 'text_domain' ),
        'edit_item'             => __( 'Edit Product', 'text_domain' ),
        'update_item'           => __( 'Update Product', 'text_domain' ),
        'view_item'             => __( 'View Product', 'text_domain' ),
        'view_items'            => __( 'View Items', 'text_domain' ),
        'search_items'          => __( 'Search products', 'text_domain' ),
        'not_found'             => __( 'No products found', 'text_domain' ),
        'not_found_in_trash'    => __( 'No products found in Trash', 'text_domain' ),
        'featured_image'        => __( 'Featured Image', 'text_domain' ),
        'set_featured_image'    => __( 'Set featured image', 'text_domain' ),
        'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),
        'use_featured_image'    => __( 'Use as featured image', 'text_domain' ),
        'insert_into_item'      => __( 'Insert into item', 'text_domain' ),
        'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
        'items_list'            => __( 'Items list', 'text_domain' ),
        'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
        'filter_items_list'     => __( 'Filter items list', 'text_domain' ),
    );
    $args = array(
        'label'                 => __( 'Product', 'text_domain' ),
        'description'           => __( 'Product information pages.', 'text_domain' ),
        'labels'                => $labels,
        'supports'              => array( 'title', 'editor', 'thumbnail', 'comments', 'custom-fields' ),
        'taxonomies'            => array( 'product_category' ),
        'hierarchical'          => false,
        'public'                => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'menu_position'         => 5,
        'menu_icon'             => 'dashicons-chart-line',
        'show_in_admin_bar'     => true,
        'show_in_nav_menus'     => true,
        'can_export'            => true,
        'has_archive'           => true,
        'exclude_from_search'   => false,
        'publicly_queryable'    => true,
        'capability_type'       => 'page',
    );
    register_post_type( 'products', $args );

}
add_action( 'init', 'products_post_type', 0 );

if ( ! function_exists( 'product_category' ) ) {

// Register Custom Taxonomy
function product_category() {

    $labels = array(
        'name'                       => _x( 'Product Categories', 'Taxonomy General Name', 'text_domain' ),
        'singular_name'              => _x( 'Product Category', 'Taxonomy Singular Name', 'text_domain' ),
        'menu_name'                  => __( 'Product Categories', 'text_domain' ),
        'all_items'                  => __( 'All Categories', 'text_domain' ),
        'parent_item'                => __( 'Parent Category', 'text_domain' ),
        'parent_item_colon'          => __( 'Parent Category:', 'text_domain' ),
        'new_item_name'              => __( 'New Category Name', 'text_domain' ),
        'add_new_item'               => __( 'Add New Category', 'text_domain' ),
        'edit_item'                  => __( 'Edit Category', 'text_domain' ),
        'update_item'                => __( 'Update Category', 'text_domain' ),
        'view_item'                  => __( 'View Category', 'text_domain' ),
        'separate_items_with_commas' => __( 'Separate categories with commas', 'text_domain' ),
        'add_or_remove_items'        => __( 'Add or remove categories', 'text_domain' ),
        'choose_from_most_used'      => __( 'Choose from the most used', 'text_domain' ),
        'popular_items'              => __( 'Popular Categories', 'text_domain' ),
        'search_items'               => __( 'Search Categories', 'text_domain' ),
        'not_found'                  => __( 'Not Found', 'text_domain' ),
        'no_terms'                   => __( 'No categories', 'text_domain' ),
        'items_list'                 => __( 'Categories list', 'text_domain' ),
        'items_list_navigation'      => __( 'Categories 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'              => false,
    );
    register_taxonomy( 'product_category', array( 'products' ), $args );

}
add_action( 'init', 'product_category', 0 );

}

if ( ! function_exists( 'product_group' ) ) {

// Register Custom Taxonomy
function product_group() {

    $labels = array(
        'name'                       => _x( 'Product Groups', 'Taxonomy General Name', 'text_domain' ),
        'singular_name'              => _x( 'Product Group', 'Taxonomy Singular Name', 'text_domain' ),
        'menu_name'                  => __( 'Product Group', 'text_domain' ),
        'all_items'                  => __( 'All Product Groups', 'text_domain' ),
        'parent_item'                => __( 'Parent Item', 'text_domain' ),
        'parent_item_colon'          => __( 'Parent Item:', 'text_domain' ),
        'new_item_name'              => __( 'New Product Group', 'text_domain' ),
        'add_new_item'               => __( 'Add New Product Group', 'text_domain' ),
        'edit_item'                  => __( 'Edit Product Group', 'text_domain' ),
        'update_item'                => __( 'Update Product Group', 'text_domain' ),
        'view_item'                  => __( 'View Product Group', 'text_domain' ),
        'separate_items_with_commas' => __( 'Separate Product Groups with commas', 'text_domain' ),
        'add_or_remove_items'        => __( 'Add or remove Product Groups', 'text_domain' ),
        'choose_from_most_used'      => __( 'Choose from the most used', 'text_domain' ),
        'popular_items'              => __( 'Popular Product Groups', 'text_domain' ),
        'search_items'               => __( 'Search Product Groups', 'text_domain' ),
        'not_found'                  => __( 'Not Found', 'text_domain' ),
        'no_terms'                   => __( 'No Product Groups', 'text_domain' ),
        'items_list'                 => __( 'Product Groups list', 'text_domain' ),
        'items_list_navigation'      => __( 'Product Groups list navigation', 'text_domain' ),
    );
    $rewrite = array(
        'slug'                       => 'product-group',
        'with_front'                 => true,
        'hierarchical'               => false,
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => false,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
        'rewrite'                    => $rewrite,
    );
    register_taxonomy( 'product_group', array( 'products' ), $args );

}
add_action( 'init', 'product_group', 0 );

}
6
  • Have you visited the Permalink Settings page to flush rewrite rules? You could also try unregister_post_type() right before re-registering the CPT, then visiting that permalinks page, to flush what's already there.
    – WebElaine
    Aug 3 at 14:35
  • @WebElaine just gave that a go, to no avail. I have toggled the true/false of show_in_nav_menus and had the CPT and Product Group behave properly... Aug 3 at 15:06
  • 2
    i just copied and pasted your code. It works fine in both the CPT structure and when i go to the appearance/ menu section. Have you checked under screen options on the menus section to see if you have it hidden?
    – rudtek
    Aug 3 at 15:07
  • 2
    @rudtek winner winner chicken dinner. THANK YOU. (yes, I warned it was likely something simple and silly ... happens to the best of us) Aug 3 at 15:17
  • 1
    @rudtek if you'd like to move your comment to an answer, I'd gladly mark it as "the one" Aug 6 at 19:31
0

I just copied and pasted your code. It works fine in both the CPT structure and when I go to the appearance/ menu section.

Have you checked under screen options on the menus section to see if you have it hidden? I've had that happen more than a couple times!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.