*/ public static function section($screen, ?Menu $menu): array { $post_type = (string) ($screen->post_type ?? ''); if ($post_type === Offering::PT) return self::offerings((string) ($screen->taxonomy ?? '')); if (in_array($post_type, [Booking::PT, Coupon::PT], true) || $menu instanceof Resources) { $tabs = []; if (post_type_exists(Booking::PT) && current_user_can(Capabilities::MANAGE_BOOKINGS)) { $tabs[] = self::tab(__('Bookings', 'daytidy'), 'edit.php?post_type=' . Booking::PT, $post_type === Booking::PT, 'wui-icon--general'); } if (Modules::enabled('resources/core') && current_user_can(Capabilities::MANAGE_RESOURCES)) { $tabs[] = self::tab(__('Resources', 'daytidy'), 'admin.php?page=' . Resources::PAGE, $menu instanceof Resources, 'wui-icon--group-items'); } $coupon = get_post_type_object(Coupon::PT); if ($coupon && $coupon->show_ui && current_user_can($coupon->cap->edit_posts)) { $tabs[] = self::tab(__('Coupons', 'daytidy'), 'edit.php?post_type=' . Coupon::PT, $post_type === Coupon::PT, 'wui-icon--ticket'); } return $tabs; } if ($menu instanceof Settings || $menu instanceof Onboarding) { if (!current_user_can(Capabilities::MANAGE_SETTINGS)) return []; return [ self::tab(__('Settings', 'daytidy'), 'admin.php?page=daytidy-settings', $menu instanceof Settings, 'wui-icon--general'), self::tab(__('Setup Wizard', 'daytidy'), 'admin.php?page=' . Onboarding::PAGE, $menu instanceof Onboarding, 'wui-icon--wizard'), ]; } return []; } /** @return array */ private static function offerings(string $selected): array { $tabs = []; if (current_user_can(Capabilities::MANAGE_OFFERINGS)) { $tabs[] = self::tab(__('Offerings', 'daytidy'), 'edit.php?post_type=' . Offering::PT, $selected === '', 'wui-icon--calendar-add'); } $icons = [ 'category' => 'wui-icon--dashboard-square-add', 'location' => 'wui-icon--location', 'host' => 'wui-icon--account', 'tag' => 'wui-icon--hashtag', 'label' => 'wui-icon--tag', 'presenter' => 'wui-icon--license-third-party', 'sponsor' => 'wui-icon--money-security', ]; foreach (['category', 'location', 'host', 'tag', 'label', 'presenter', 'sponsor'] as $name) { $taxonomy = 'daytidy-offering-' . $name; $object = get_taxonomy($taxonomy); if (!$object || !$object->show_ui || !current_user_can($object->cap->manage_terms)) continue; $tabs[] = self::tab($object->labels->name, 'edit-tags.php?taxonomy=' . $taxonomy . '&post_type=' . Offering::PT, $selected === $taxonomy, $icons[$name]); } return $tabs; } /** @return array{title: string, url: string, selected: bool, icon: string} */ private static function tab(string $title, string $path, bool $selected, string $icon): array { return ['title' => $title, 'url' => admin_url($path), 'selected' => $selected, 'icon' => $icon]; } }