[wp-trac] [WordPress Trac] #50019: remove_meta_box triggers warning in PHP 7.4

WordPress Trac noreply at wordpress.org
Mon Apr 27 19:50:11 UTC 2020


#50019: remove_meta_box triggers warning in PHP 7.4
-------------------------------+------------------------------
 Reporter:  coolmann           |       Owner:  (none)
     Type:  defect (bug)       |      Status:  new
 Priority:  normal             |   Milestone:  Awaiting Review
Component:  Posts, Post Types  |     Version:  5.4
 Severity:  major              |  Resolution:
 Keywords:  needs-patch        |     Focuses:  ui
-------------------------------+------------------------------
Description changed by SergeyBiryukov:

Old description:

> After updating my local sandbox to PHP 7.4, I started seeing errors on my
> Edit Page screen for my custom post type:
>
> Notice: Trying to access array offset on value of type bool in /[..]/wp-
> admin/includes/template.php on line 1079, 1080, 1081
>
> After some research, I narrowed down the issue to a call in one of my
> plugin, which removes one of the metaboxes on that screen:
>
> remove_meta_box( 'profile_rolediv', 'people', 'normal' );
>
> Everything had been working fine in earlier versions. Looking at the code
> in template.php, it looks like remove_meta_box just sets values to false,
> instead of removing the entry:
>
> function remove_meta_box( $id, $screen, $context ) {
>   .
>   .
>   $wp_meta_boxes[ $page ][ $context ][ $priority ][ $id ] = false;
>   .
>   .
> }
>
> which then causes this line in template.php to fail:
>
> $title = $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id
> ]['title'];
>
> Changing line 1078 in wp-admin/includes/template.php fixes the issue:
>
> } elseif ( 'sorted' == $priority && is_array( $wp_meta_boxes[ $page ][
> $a_context ][ $a_priority ][ $id ] ) ) {
>
> Thank you,
> Jason

New description:

 After updating my local sandbox to PHP 7.4, I started seeing errors on my
 Edit Page screen for my custom post type:

  Notice: Trying to access array offset on value of type bool in /[..]/wp-
 admin/includes/template.php on line 1079, 1080, 1081

 After some research, I narrowed down the issue to a call in one of my
 plugin, which removes one of the metaboxes on that screen:
 {{{
 remove_meta_box( 'profile_rolediv', 'people', 'normal' );
 }}}
 Everything had been working fine in earlier versions. Looking at the code
 in template.php, it looks like remove_meta_box just sets values to false,
 instead of removing the entry:
 {{{
 function remove_meta_box( $id, $screen, $context ) {
   .
   .
   $wp_meta_boxes[ $page ][ $context ][ $priority ][ $id ] = false;
   .
   .
 }
 }}}
 which then causes this line in template.php to fail:
 {{{
 $title = $wp_meta_boxes[ $page ][ $a_context ][ $a_priority ][ $id
 ]['title'];
 }}}
 Changing line 1078 in wp-admin/includes/template.php fixes the issue:
 {{{
 } elseif ( 'sorted' == $priority && is_array( $wp_meta_boxes[ $page ][
 $a_context ][ $a_priority ][ $id ] ) ) {
 }}}
 Thank you,
 Jason

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/50019#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list