WordPress.org

Make WordPress Core

Opened 6 months ago

#47029 new defect (bug)

Custom Taxonomies, with no post_type association and custom submenu location, UX experience is broken when on Taxonomy management page

Reported by: son9ne Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version: 5.1.1
Component: Taxonomy Keywords:
Focuses: Cc:
PR Number:

Description

When creating a custom taxonomy with no post_type association, then adding a add_submenu_page option for it under any specific menu, the link will show in the proper location. The problem is when you view the taxonomy management page, the UX is not as expected.

One would expect the main menu location to be open and the submenu to be bolded (normal nav UX).

e.g.

  • Posts
  • Custom Main Menu Item
    • Add New
    • Custom Taxonomy

What actually happens is that the Posts main menu is open and nothing is highlighted.

e.g.

  • Posts
    • All Posts
    • Add New
    • Categories
  • Custom Main Menu Item

When you do go to the main menu location that the taxonomy is assigned to, you do see what is expected. Meaning, the submenu option is bolded, the main menu just is closed and not opened. Only the Posts main menu item is open.

The issue appears to be that when there is no post_type association, the Posts main menu is always the open main menu item.

I provided an example below.

This example adds a new taxonomy to the plugin: https://wordpress.org/plugins/query-wrangler/
(This was a quick way to duplicate the issue but to be honest, I have this exact issue on every custom taxonomy with no post_type association. )

It creates the menus structure:

  • Query Wrangler
    • Add New
    • Import
    • Settings
    • Content Groups

When I click on the Content Groups taxonomy, I am taken to the taxonomy management page as expected. The issue is the admin nav now shows:

  • Posts
    • All Posts
    • Add New
    • Categories
  • Custom Main Menu Item

Instead of:

  • Query Wrangler
    • Add New
    • Import
    • Settings
    • Content Groups
<?php

/**
 * Class Content_Groups
 * Allows building content groups by associating Query Wrangler and Custom queries
 */
class Content_Groups {

    /**
     * Taxonomy identifier
     */
    const TAX_NAME = 'content-groups';

    /**
     * Query Wrangler page slug
     */
    const MENU_SLUG = 'query-wrangler';


    public function __construct() {
        \add_action('init', array($this, 'register'));
        \add_action('admin_menu', [$this, 'add_sub_menu'], 99999); // Must be lower than Query Wrangler's value: 9999
    }

    /**
     * Registers Taxonomy
     * @link https://codex.wordpress.org/Function_Reference/register_taxonomy
     * @link https://core.trac.wordpress.org/ticket/28033
     */
    public function register() {
        $capability_type = str_replace('-', '_', self::TAX_NAME);
        $args           = array(
            'hierarchical' => false,
            'labels'       => [
                'name'                       => _x('Content Groups', 'taxonomy general name', 'text-domain'),
                'singular_name'              => _x('Content Group', 'taxonomy singular name', 'text-domain'),
                'menu_name'                  => _x('Content Groups', 'menu_name', 'text-domain'),
                'all_items'                  => _x('All Content Groups', 'all_items', 'text-domain'),
                'edit_item'                  => _x('Edit Content Group', 'edit_item', 'text-domain'),
                'view_item'                  => _x('View Content Group', 'view_item', 'text-domain'),
                'update_item'                => _x('Update Content Group', 'update_item', 'text-domain'),
                'add_new_item'               => _x('Add New Content Group', 'add_new_item', 'text-domain'),
                'new_item_name'              => _x('New Content Group Name', 'new_item_name', 'text-domain'),
                'parent_item'                => _x('Parent Content Group', 'new_item_name', 'text-domain'),
                'parent_item_colon'          => _x('Parent Content Group:', 'parent_item_colon', 'text-domain'),
                'search_items'               => _x('Search Content Groups', 'search_items', 'text-domain'),
                'popular_items'              => _x('Popular Content Groups', 'popular_items', 'text-domain'),
                'separate_items_with_commas' => _x('Separate content groups with commas', 'separate_items_with_commas', 'text-domain'),
                'add_or_remove_items'        => _x('Add or Remove Content Groups', 'add_or_remove_items', 'text-domain'),
                'choose_from_most_used'      => _x('Choose from the most used content groups', 'choose_from_most_used', 'text-domain'),
                'not_found'                  => _x('No content groups found', 'not_found', 'text-domain'),
            ],
            'capabilities' => [
                'manage_terms' => "manage_{$capability_type}",
                'edit_terms'   => "edit_{$capability_type}",
                'delete_terms' => "delete_{$capability_type}",
                'assign_terms' => "assign_{$capability_type}",
            ],
            'show_ui'      => true,
            'show_menu_ui' => true,
            'query_var'    => true
        );

        // Register the taxonomy
        \register_taxonomy(self::TAX_NAME, NULL, $args);
    }

    /**
     * Builds the menu
     */
    public function add_sub_menu() {
        $capability_type = str_replace('-', '_', self::TAX_NAME);
        \add_submenu_page(
            self::MENU_SLUG,
            _x('Content Groups', 'menu_name', 'text-domain'),
            _x('Content Groups', 'menu_name', 'text-domain'),
            "manage_{$capability_type}",
            'edit-tags.php?taxonomy=' . self::TAX_NAME
        );
    }

}

Attachments (3)

QueryWranglerMenuCorrect.png (7.9 KB) - added by son9ne 6 months ago.
Correct Menu with Query Wrangler
CustomTaxManagementPage.png (30.7 KB) - added by son9ne 6 months ago.
What I actually see when on Taxonomy management page
SubmenuIsThere.png (15.5 KB) - added by son9ne 6 months ago.
When hovering over Query Wrangler, the submenu is there and bolded

Download all attachments as: .zip

Change History (3)

@son9ne
6 months ago

Correct Menu with Query Wrangler

@son9ne
6 months ago

What I actually see when on Taxonomy management page

@son9ne
6 months ago

When hovering over Query Wrangler, the submenu is there and bolded

Note: See TracTickets for help on using tickets.