[wp-trac] [WordPress Trac] #40649: parent_file filter seems to be overwritten by get_admin_page_parent call
WordPress Trac
noreply at wordpress.org
Tue May 23 03:38:31 UTC 2017
#40649: parent_file filter seems to be overwritten by get_admin_page_parent call
--------------------------+------------------------------
Reporter: jontis | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Menus | Version: 4.7.4
Severity: normal | Resolution:
Keywords: | Focuses: administration
--------------------------+------------------------------
Description changed by welcher:
Old description:
> In wp-admin/menu-header.php the filter 'parent_file' seems to have little
> to no impact most of the time.
> This is because the global $parent_file variable often gets immediately
> overwritten by the get_admin_page_parent function call.
>
> {{{#!php
> <?php
> /**
> * Filters the parent file of an admin menu sub-menu item.
> *
> * Allows plugins to move sub-menu items around.
> *
> * @since MU
> *
> * @param string $parent_file The parent file.
> */
> $parent_file = apply_filters( 'parent_file', $parent_file );
>
> /**
> * Filters the file of an admin menu sub-menu item.
> *
> * @since 4.4.0
> *
> * @param string $submenu_file The submenu file.
> * @param string $parent_file The submenu item's parent file.
> */
> $submenu_file = apply_filters( 'submenu_file', $submenu_file,
> $parent_file );
>
> get_admin_page_parent();
> }}}
>
> I am not completely sure what the purpose of the get_admin_page_parent
> is, but maybe the filter should be called after or inside that function?
>
> To try to give an example. If I have the "Broken Link Checker" plugin
> installed and try to move it's settings page to the Tools menu I would
> want use this code:
> {{{#!php
> <?php
> add_filter('parent_file', 'move_to_tools');
> function move_to_tools($parent_file){
> global $hook_suffix;
>
> if($hook_suffix === 'settings_page_link-checker-settings'){
> $parent_file = 'tools.php';
> }
>
> return $parent_file;
> };
> }}}
>
> However, because of the above mentioned issue this code does nothing.
> I am aware completely moving a settings page requires more work than
> this, this is purely an example.
New description:
In wp-admin/menu-header.php the filter `parent_file` seems to have little
to no impact most of the time.
This is because the global `$parent_file` variable often gets immediately
overwritten by the `get_admin_page_parent` function call.
{{{#!php
<?php
/**
* Filters the parent file of an admin menu sub-menu item.
*
* Allows plugins to move sub-menu items around.
*
* @since MU
*
* @param string $parent_file The parent file.
*/
$parent_file = apply_filters( 'parent_file', $parent_file );
/**
* Filters the file of an admin menu sub-menu item.
*
* @since 4.4.0
*
* @param string $submenu_file The submenu file.
* @param string $parent_file The submenu item's parent file.
*/
$submenu_file = apply_filters( 'submenu_file', $submenu_file, $parent_file
);
get_admin_page_parent();
}}}
I am not completely sure what the purpose of the get_admin_page_parent is,
but maybe the filter should be called after or inside that function?
To try to give an example. If I have the "Broken Link Checker" plugin
installed and try to move it's settings page to the Tools menu I would
want use this code:
{{{#!php
<?php
add_filter('parent_file', 'move_to_tools');
function move_to_tools($parent_file){
global $hook_suffix;
if($hook_suffix === 'settings_page_link-checker-settings'){
$parent_file = 'tools.php';
}
return $parent_file;
};
}}}
However, because of the above mentioned issue this code does nothing.
I am aware completely moving a settings page requires more work than this,
this is purely an example.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/40649#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list