Make WordPress Core

Changeset 47616


Ignore:
Timestamp:
04/23/2020 06:56:40 PM (6 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.