add_action( 'admin_menu', $this, 'add_top_level_menu', 5 ); } public function add_top_level_menu(): void { add_menu_page( __( 'AcademicCrew', 'academiccrew' ), __( 'AcademicCrew', 'academiccrew' ), 'edit_posts', self::PARENT_SLUG, [ $this, 'render_dashboard' ], 'dashicons-groups', 30 ); // Rename the auto-created first submenu from "AcademicCrew" to "Dashboard" add_submenu_page( self::PARENT_SLUG, __( 'Dashboard', 'academiccrew' ), __( 'Dashboard', 'academiccrew' ), 'edit_posts', self::PARENT_SLUG, [ $this, 'render_dashboard' ] ); } public function render_dashboard(): void { global $wpdb; $is_pro = Freemius::is_pro(); $member_count = (int) ( wp_count_posts( 'academiccrew_member' )->publish ?? 0 ); $course_count = (int) ( wp_count_posts( 'academiccrew_course' )->publish ?? 0 ); $pub_count = (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->prefix}academiccrew_publications" ); // phpcs:ignore WordPress.DB $last_sync = $is_pro ? $wpdb->get_row( // phpcs:ignore WordPress.DB "SELECT status, source, member_id, finished_at FROM {$wpdb->prefix}academiccrew_sync_log ORDER BY id DESC LIMIT 1", ARRAY_A ) : null; ?>