Make it possible (far easier) to add menu items under 'Marketing' (https://github.com/woocommerce/woocommerce-admin/pull/4561)
* Make it possible to add marketing submenu pages * Always set the parent value for marketing pages * phpcs * Add ‘overview’ to breadcrumb and path * Fix permission check conditional * Add parent menu at priority of 9, before other items are usually added * Revert to use `/marketing` as the page path
This commit is contained in:
parent
0fc1ec29fb
commit
ca517af7c0
|
@ -169,9 +169,13 @@ export const getPages = () => {
|
|||
path: '/marketing',
|
||||
breadcrumbs: [
|
||||
...initialBreadcrumbs,
|
||||
__( 'Marketing', 'woocommerce-admin' ),
|
||||
[
|
||||
'/marketing',
|
||||
__( 'Marketing', 'woocommerce-admin' ),
|
||||
],
|
||||
__( 'Overview', 'woocommerce-admin' ),
|
||||
],
|
||||
wpOpenMenu: 'toplevel_page_wc-admin-path--marketing',
|
||||
wpOpenMenu: 'toplevel_page_woocommerce-marketing',
|
||||
} );
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,9 @@ class Marketing {
|
|||
* Hook into WooCommerce.
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'admin_menu', array( $this, 'add_parent_menu_item' ), 9 );
|
||||
add_action( 'admin_menu', array( $this, 'register_pages' ) );
|
||||
add_action( 'admin_head', array( $this, 'modify_menu_structure' ) );
|
||||
|
||||
if ( ! is_admin() ) {
|
||||
return;
|
||||
|
@ -60,17 +62,32 @@ class Marketing {
|
|||
add_filter( 'woocommerce_shared_settings', array( $this, 'component_settings' ), 30 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add main marketing menu item.
|
||||
*
|
||||
* Uses priority of 9 so other items can easily be added at the default priority (10).
|
||||
*/
|
||||
public function add_parent_menu_item() {
|
||||
add_menu_page(
|
||||
__( 'Marketing', 'woocommerce-admin' ),
|
||||
__( 'Marketing', 'woocommerce-admin' ),
|
||||
'manage_woocommerce',
|
||||
'woocommerce-marketing',
|
||||
null,
|
||||
'dashicons-megaphone',
|
||||
58
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers report pages.
|
||||
*/
|
||||
public function register_pages() {
|
||||
$marketing_pages = array(
|
||||
array(
|
||||
'id' => 'woocommerce-marketing',
|
||||
'title' => __( 'Marketing', 'woocommerce-admin' ),
|
||||
'path' => '/marketing',
|
||||
'icon' => 'dashicons-megaphone',
|
||||
'position' => 58, // After WooCommerce & Product menu items.
|
||||
'id' => 'woocommerce-marketing-overview',
|
||||
'title' => __( 'Overview', 'woocommerce-admin' ),
|
||||
'path' => '/marketing',
|
||||
),
|
||||
);
|
||||
|
||||
|
@ -78,11 +95,43 @@ class Marketing {
|
|||
|
||||
foreach ( $marketing_pages as $marketing_page ) {
|
||||
if ( ! is_null( $marketing_page ) ) {
|
||||
$marketing_page['parent'] = 'woocommerce-marketing';
|
||||
wc_admin_register_page( $marketing_page );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify the Marketing menu structure
|
||||
*/
|
||||
public function modify_menu_structure() {
|
||||
global $submenu;
|
||||
|
||||
$marketing_submenu_key = 'woocommerce-marketing';
|
||||
$overview_key = null;
|
||||
|
||||
// User does not have capabilites to see the submenu.
|
||||
if ( ! current_user_can( 'manage_woocommerce' ) || empty( $submenu[ $marketing_submenu_key ] ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ( $submenu[ $marketing_submenu_key ] as $submenu_key => $submenu_item ) {
|
||||
if ( 'wc-admin&path=/marketing' === $submenu_item[2] ) {
|
||||
$overview_key = $submenu_key;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove PHP powered top level page.
|
||||
unset( $submenu[ $marketing_submenu_key ][0] );
|
||||
|
||||
// Move overview menu item to top.
|
||||
if ( null !== $overview_key ) {
|
||||
$menu = $submenu[ $marketing_submenu_key ][ $overview_key ];
|
||||
unset( $submenu[ $marketing_submenu_key ][ $overview_key ] );
|
||||
array_unshift( $submenu[ $marketing_submenu_key ], $menu );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Preload options to prime state of the application.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue