pages = $pages; } /** * Hooks into WordPress. * * @return void */ public function register() { add_action( 'admin_menu', array( $this, 'add_pages' ) ); } /** * Adds the menu entries. * * @return void */ public function add_pages() { $main = $this->pages[0]; add_menu_page( __( 'TurtleReport', 'turtlereport' ), __( 'TurtleReport', 'turtlereport' ), $main->capability(), $main::SLUG, array( $main, 'render' ), self::icon(), 30 ); foreach ( $this->pages as $page ) { $hook = add_submenu_page( $main::SLUG, $page->menu_title() . ' ‹ ' . __( 'TurtleReport', 'turtlereport' ), $page->menu_title(), $page->capability(), $page::SLUG, array( $page, 'render' ) ); $page->set_hook( (string) $hook ); } } /** * Menu icon: a turtle, as an SVG data URI that WordPress recolours. * * @return string */ private static function icon() { $svg = ''; // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode -- WordPress requires menu SVG icons as base64 data URIs. return 'data:image/svg+xml;base64,' . base64_encode( $svg ); } }