Make WordPress Core


Ignore:
Timestamp:
05/09/2020 12:24:31 PM (4 years ago)
Author:
SergeyBiryukov
Message:

Administration: Avoid a PHP 7.4 notice in add_meta_box() when attempting to re-add a previously removed box.

The logic for skipping previously removed meta boxes with the core priority should also apply to the sorted priority that is used when the boxes were manually reordered.

Add a unit test.

Props coolmann, franzarmas, SergeyBiryukov.
Fixes #50019.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/admin/includesTemplate.php

    r47122 r47777  
    5858        global $wp_meta_boxes;
    5959
    60         // Add a meta boxes to remove.
     60        // Add a meta box to remove.
    6161        add_meta_box( 'testbox1', 'Test Metabox', '__return_false', $current_screen = 'post' );
    6262
     
    107107        $this->assertFalse( $wp_meta_boxes['comment']['advanced']['default']['testbox1'] );
    108108        $this->assertFalse( $wp_meta_boxes['attachment']['advanced']['default']['testbox1'] );
     109    }
     110
     111    /**
     112     * @ticket 50019
     113     */
     114    public function test_add_meta_box_with_previously_removed_box_and_sorted_priority() {
     115        global $wp_meta_boxes;
     116
     117        // Add a meta box to remove.
     118        add_meta_box( 'testbox1', 'Test Metabox', '__return_false', $current_screen = 'post' );
     119
     120        // Remove the meta box.
     121        remove_meta_box( 'testbox1', $current_screen, 'advanced' );
     122
     123        // Attempt to re-add the meta box with the 'sorted' priority.
     124        add_meta_box( 'testbox1', null, null, $current_screen, 'advanced', 'sorted' );
     125
     126        // Check that the meta box was not re-added.
     127        $this->assertFalse( $wp_meta_boxes[ $current_screen ]['advanced']['default']['testbox1'] );
    109128    }
    110129
Note: See TracChangeset for help on using the changeset viewer.