Make WordPress Core


Ignore:
Timestamp:
01/24/2022 05:32:28 AM (2 years ago)
Author:
noisysocks
Message:

Customizer: Remove Menus panel when a theme does not support menus

By overriding check_capabilities(), we can ensure that the Menus panel
is removed if a theme does not have support for 'menus' nor 'widgets'.

This ensures that the Menus panel does not appear when using a block
theme, which is confusing to users.

See #54888.
Props hellofromTonya, costdev, peterwilsoncc.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/customize/class-wp-customize-nav-menus-panel.php

    r45932 r52621  
    9999        <?php
    100100    }
     101
     102    /**
     103     * Checks required user capabilities and whether the theme has the
     104     * feature support required by the panel.
     105     *
     106     * @since 5.9.0
     107     *
     108     * @return bool False if theme doesn't support the panel or the user doesn't have the capability.
     109     */
     110    public function check_capabilities() {
     111        /*
     112         * WP_Customize_Panel::$theme_supports only supports checking one
     113         * theme_supports, so instead we override check_capabilities().
     114         */
     115        if (
     116            ! current_theme_supports( 'menus' ) &&
     117            ! current_theme_supports( 'widgets' )
     118        ) {
     119            return false;
     120        }
     121
     122        return parent::check_capabilities();
     123    }
    101124}
Note: See TracChangeset for help on using the changeset viewer.