Make WordPress Core

Changeset 47616


Ignore:
Timestamp:
04/23/2020 06:56:40 PM (5 years ago)
Author:
SergeyBiryukov
Message:

Networks and Sites: Don't display an empty Menu Settings section in network admin if there are no items.

This accounts for returning an empty array from the mu_menu_items filter.

Props dlh.
Fixes #49977.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/network/settings.php

    r47550 r47616  
    439439        ?>
    440440
    441         <h2><?php _e( 'Menu Settings' ); ?></h2>
    442         <table id="menu" class="form-table">
    443             <tr>
    444                 <th scope="row"><?php _e( 'Enable administration menus' ); ?></th>
    445                 <td>
     441        <?php
     442        $menu_perms = get_site_option( 'menu_items' );
     443        /**
     444         * Filters available network-wide administration menu options.
     445         *
     446         * Options returned to this filter are output as individual checkboxes that, when selected,
     447         * enable site administrator access to the specified administration menu in certain contexts.
     448         *
     449         * Adding options for specific menus here hinges on the appropriate checks and capabilities
     450         * being in place in the site dashboard on the other side. For instance, when the single
     451         * default option, 'plugins' is enabled, site administrators are granted access to the Plugins
     452         * screen in their individual sites' dashboards.
     453         *
     454         * @since MU (3.0.0)
     455         *
     456         * @param string[] $admin_menus Associative array of the menu items available.
     457         */
     458        $menu_items = apply_filters( 'mu_menu_items', array( 'plugins' => __( 'Plugins' ) ) );
     459
     460        if ( $menu_items ) :
     461            ?>
     462            <h2><?php _e( 'Menu Settings' ); ?></h2>
     463            <table id="menu" class="form-table">
     464                <tr>
     465                    <th scope="row"><?php _e( 'Enable administration menus' ); ?></th>
     466                    <td>
     467                        <?php
     468                        echo '<fieldset><legend class="screen-reader-text">' . __( 'Enable menus' ) . '</legend>';
     469
     470                        foreach ( (array) $menu_items as $key => $val ) {
     471                            echo "<label><input type='checkbox' name='menu_items[" . $key . "]' value='1'" . ( isset( $menu_perms[ $key ] ) ? checked( $menu_perms[ $key ], '1', false ) : '' ) . ' /> ' . esc_html( $val ) . '</label><br/>';
     472                        }
     473
     474                        echo '</fieldset>';
     475                        ?>
     476                    </td>
     477                </tr>
     478            </table>
    446479            <?php
    447             $menu_perms = get_site_option( 'menu_items' );
    448             /**
    449              * Filters available network-wide administration menu options.
    450              *
    451              * Options returned to this filter are output as individual checkboxes that, when selected,
    452              * enable site administrator access to the specified administration menu in certain contexts.
    453              *
    454              * Adding options for specific menus here hinges on the appropriate checks and capabilities
    455              * being in place in the site dashboard on the other side. For instance, when the single
    456              * default option, 'plugins' is enabled, site administrators are granted access to the Plugins
    457              * screen in their individual sites' dashboards.
    458              *
    459              * @since MU (3.0.0)
    460              *
    461              * @param string[] $admin_menus Associative array of the menu items available.
    462              */
    463             $menu_items = apply_filters( 'mu_menu_items', array( 'plugins' => __( 'Plugins' ) ) );
    464 
    465             echo '<fieldset><legend class="screen-reader-text">' . __( 'Enable menus' ) . '</legend>';
    466 
    467             foreach ( (array) $menu_items as $key => $val ) {
    468                 echo "<label><input type='checkbox' name='menu_items[" . $key . "]' value='1'" . ( isset( $menu_perms[ $key ] ) ? checked( $menu_perms[ $key ], '1', false ) : '' ) . ' /> ' . esc_html( $val ) . '</label><br/>';
    469             }
    470 
    471             echo '</fieldset>';
    472             ?>
    473                 </td>
    474             </tr>
    475         </table>
     480        endif;
     481        ?>
    476482
    477483        <?php
Note: See TracChangeset for help on using the changeset viewer.