[WordPress] 外掛分享: Swim Club Manager

首頁外掛目錄 › Swim Club Manager
WordPress 外掛 Swim Club Manager 的封面圖片
全新外掛
安裝啟用
尚無評分
5 天前
最後更新
問題解決
WordPress 6.4+ PHP 8.1+ v1.2.0 上架:2026-08-25

內容簡介

Swim Club Manager 是一款專為游泳俱樂部設計的 WordPress 外掛,能有效管理會員資料、出席紀錄、訓練計畫及比賽日曆,提升俱樂部運營效率。

【主要功能】
• 會員管理:完整的會員資料與會費管理
• 出席紀錄:每次訓練的出席狀態紀錄
• 訓練計畫:管理訓練小組與每週排程
• 比賽日曆:追蹤即將舉行的比賽
• 成績紀錄:自動彙總會員的最佳成績
• 設備目錄:俱樂部設備的庫存與定價資訊

外掛標籤

開發者團隊

⬇ 下載最新版 (v1.2.0) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「Swim Club Manager」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

Swim Club Manager is a WordPress plugin for managing all aspects of a swimming club:

Members — full profiles (personal info, club details, membership fees, equipment orders, competition entries, results) organized into tabs on a single edit screen
Attendance — per-session log with present / absent / excused status
Groups & Schedules — training groups with weekly schedule management
Competition Calendar — upcoming meets with participant tracking
Competition Entries & Results — log which disciplines a member is entered in per meet (including relay leg/stroke and pool length), and see their personal-best times automatically summarized in a year-by-year, pool-length results matrix
Club Equipment Catalog — club gear with stock and pricing info

All data is managed through the WordPress admin. Shortcodes are available for frontend display — see Shortcodes below, or the full list with a copy-paste-ready syntax on the plugin’s Dashboard page in wp-admin.
Shortcodes

[swimclma_groups_schedule program="competitive" season="2025-26"] — training groups & weekly schedule (both attributes optional)
[swimclma_competition_calendar season="2025-26"] — upcoming competitions for a season
[swimclma_equipment_catalog in_stock="1"] — club equipment catalog with an “order via email” form
[swimclma_member_list program="competitive"] — member list (visible to logged-in staff only)
[swimclma_attendance_stats member_id="123"] — one member’s attendance rate
[swimclma_member_results member_id="123"] — one member’s personal-best times, grouped by pool length, year and discipline

Developer Notes
Autoloading
Classes are loaded via Composer’s PSR-4 autoloader (vendor/autoload.php), required once at the top of swim-club-manager.php.
composer.json maps the `SwimClub` namespace to three base directories:

SwimClub\ → includes/
SwimClub\Admin\ → admin/
SwimClub\Public\ → public/

Sub-namespaces map to subdirectories one-to-one, and the filename must match the class name exactly (PSR-4):

SwimClub\PostTypes\Member → includes/PostTypes/Member.php
SwimClub\Taxonomies\Age_Category → includes/Taxonomies/Age_Category.php
SwimClub\DB\EquipmentOrders → includes/DB/EquipmentOrders.php

SwimClub\Admin\Admin → admin/Admin.php
includes/Plugin.php (SwimClub\Plugin, the bootstrap singleton returned by swim_club_manager()) wires up admin/public hooks, post types, taxonomies, shortcodes, and REST routes — each referenced class is autoloaded lazily when first instantiated, not eagerly required.

Admin controllers
admin/Admin.php only handles enqueueing, menu registration, page-partial rendering, and meta boxes. Form/CRUD handling (the `admin_post_swimclma_*` actions) lives one-per-domain under `admin/Controllers/` (`SwimClub\Admin\Controllers\`) — `MemberController`, `GroupController`, `AttendanceController`, `CompetitionController`, `EquipmentController`, `EquipmentOrderController`, `MembershipFeeController`, `CompetitionEntryController`, `SettingsController`. Each exposes `save()` / `delete()` (and `update_status()` where relevant) and is wired directly to its `admin_post_*` hook in `Plugin::define_admin_hooks()`. They all extend the abstract `Controller` base class, which provides the shared nonce/capability guard helpers (`verify_nonce_or_die()`, `verify_request_nonce_or_die()`, `require_cap_or_die()`).

Working with the code

After pulling changes that add/rename/move a class, run composer dump-autoload -o to regenerate the optimized classmap in vendor/.
vendor/ is committed and ships with the plugin — WordPress installs don’t run a Composer build step, so it must be present in the deployed copy.
Non-class files (admin partials, public partials, JS/CSS) are included directly by the components that render them and are unaffected by autoloading.
Public-facing shortcode styles are written as Sass (public/scss/) — one BEM component per shortcode under public/scss/components/, shared tokens/mixins under public/scss/abstracts/, compiled to public/css/public.css via npm install && npm run build:css (or npm run watch:css while editing). Like vendor/, public/css/public.css is committed and ships with the plugin — regenerate it after any .scss change, since WordPress installs don’t run this build step either. It’s enqueued by SwimClub\Public\PublicAssets::enqueue_styles() (wired in Plugin::define_public_hooks()), which only loads it on pages whose content contains one of the plugin’s shortcodes.
includes/Activator.php and includes/Deactivator.php are autoloaded like everything else; they don’t need to be required manually before plugins_loaded since register_activation_hook()/register_deactivation_hook() only invoke their callback once WordPress actually fires the (de)activation event, by which point the autoloader is already registered.

延伸相關外掛

文章
Filter
Mastodon