I am trying to get a list of all registered meta boxes in the wordpress admin, specifically the Dashboard widgets.
Now this is easily achieved with the global variable $wp_meta_boxes
and does exactly what I need but only when on the dashboard page.
If I am on a custom admin page or a setting page for example, I get nothing. I am trying to get a list of dashboard widgets and give users the option to put them on a different custom admin page / dashboard.
There are a couple of other similar questions to getting these meta boxes and I am aware of the following code that is been given as an answer, however it has the same problem and it returns an empty array if not on the dashboard page:
function get_meta_boxes( $screen = null, $context = 'advanced' ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
return $wp_meta_boxes[$page][$context];
}
Anyone have any ideas? Should the $wp_meta_boxes
be working and there is something going on with my setup? Or is there another way of doing this?
Any help would be massively appreciated!
add_meta_boxes
action runs, and even then, they might be conditionally added, and, the code that registers them may not work outside of their usual context. If you can provide the context of why you want this and what problem it solves, as well as where/when you're trying to do this, that would be super helpful