
內容簡介
PCIO VIS Member Event 將您的 WordPress 網站轉變為一個完整的志願組織或協會後台,提供會員註冊、活動日曆、電子郵件和通訊工具、文件庫及簡易財務日誌等功能,並與現有的 WordPress 角色無縫整合。
【主要功能】
• 會員註冊與搜尋功能
• 活動日曆與報名系統
• 文件庫按類型分組
• 財務概覽給授權用戶
• 自訂角色與權限管理
• 短碼支援以嵌入內容
外掛標籤
開發者團隊
原文外掛簡介
PCIO VIS Member Event turns your WordPress site into a complete back office for a voluntary organization or association.
It provides a members register, an event calendar with public sign-ups, e-mail and newsletter tools, a document library and a simple finance journal — all built on native WordPress capabilities so access control works with the roles you already use.
Public pages are served automatically under /vis/; no WordPress pages or shortcodes are required to get started. The public event permalinks are the one exception: the plugin creates a single Event page (slug event, containing the [pcio_me_event] shortcode) that /events/{slug}/ links to, so those pages render through the theme’s page template and use your site’s header and footer:
Home (/vis/) — landing page for members.
Members (/vis/members) — searchable members directory.
Member (/vis/members/{id}) — member detail page with a Settings tab and, for administrators, a History tab.
Calendar (/vis/calendar) — upcoming events with sign-up.
Event (/vis/events/{id}) — member event detail page with banner, description and sign-up box.
Public event (/events/{slug}) — indexable, no-login event page rendered through the Event page.
Mails (/vis/mails) — member mailings.
Newsletters (/vis/newsletters) — public newsletter archive.
Documents (/vis/documents) — document library grouped by type.
Finance (/vis/finance) — finance overview for authorized users.
Statistics (/vis/statistics) — member growth chart, page-view and login counters, and sponsor link click tracking.
Roles and capabilities. The plugin defines a cumulative set of logical roles — Member, Volunteer, Event Manager, Publisher and System Admin — that grant additional capabilities to Vis members. Define these roles under Vis → Roles and assign them to member records. Default management capabilities are also granted to built-in WordPress roles.
The vis_member capability is a separate membership marker granted to individual WordPress accounts when they are linked or provisioned as Vis members, and revoked when membership is removed. It is shown on Vis → Roles for reference, but is not selectable as a role capability. The default Member role intentionally has no additional capabilities; basic member access comes from this marker.
In member lists, the Vis Role column displays Member when the linked WordPress account has vis_member and no explicit Vis role is assigned. This is a display-only fallback: stored assignments and permissions are unchanged, and explicitly assigned roles remain visible. It is not a subscription-status indicator.
Additional role capabilities include:
Volunteer
Create own events
Edit own events
Edit all events
Publish events / manage documents
Manage members
Manage settings & mails
Manage finance
Shortcodes. For themes that prefer to embed content in ordinary pages, the plugin also ships shortcodes: [pcio_me_members], [pcio_me_documents], [pcio_me_edit_profile], [pcio_me_event], [pcio_me_events], [pcio_me_event_roller], [pcio_me_newsletters], [pcio_me_member_count], [pcio_me_member_signup] and [pcio_me_rolling_text]. The [pcio_me_event] shortcode renders a compact event card when given id or slug, and the full-width detail layout when left bare on the Event page (where it resolves the event from /events/{slug}/). The [pcio_me_edit_profile] shortcode renders a pre-filled profile form (membership number, name, email, phone, address) for the logged-in member, validates in the browser and saves over REST; the membership number is shown read-only. The [pcio_me_members] shortcode renders a searchable member table — it requires a logged-in account holding the vis_member capability, and the table includes each member’s email address and phone number. The search box filters rows live and shows a message when nothing matches, and ?member_number=… in the page URL pre-fills the membership-number filter. The [pcio_me_member_count] shortcode displays an animated total member count and can be used in any page builder (e.g. a Divi Text Module); each render increments the front-page-view counter visible on the Statistics dashboard. The [pcio_me_member_signup] shortcode renders a public member registration form that creates the member, provisions a WordPress account and sends an automated welcome email. The [pcio_me_rolling_text] shortcode outputs a scheduled scrolling banner. A Shortcode reference page in the Vis admin documents every shortcode with its attributes and examples, and a Sponsor Links page documents the pcio-sponsor-link class used for click tracking.
Change history and undo. Every change to Vis data (members, events, sign-ups, roles, workgroups, documents, mails, journal entries and extension data) is logged with the time, the user and a readable description. Vis → History lists all changes newest first, and the event and member pages have their own History tab. Users with the vis_undo_changes capability (System Admin) can undo a change; the undo is itself logged and can be undone again. Undo restores database rows only — sent e-mails, payments and WordPress accounts are not reverted, and changes with such side effects are logged as not undoable. Long text fields (event descriptions, mail content) are summarised by length in the log instead of storing every version in full.
WordPress user cleanup. Vis → WP User Cleanup lists WordPress accounts not linked to a Vis member. WordPress administrators with user-deletion permissions can select accounts and choose Delete selected, or use Delete All for the eligible accounts on this list only. Accounts with any authored posts, pages, attachments, custom post types or revisions (including drafts and trash), registered-user comments, or legacy WordPress links are kept and marked in the Status column. Administrators, accounts with manage_options, super administrators and the current account are protected. The server rechecks eligibility when the action is submitted, uses WordPress user-deletion APIs and reports deleted, skipped and failed accounts. Deletion is permanent and unavailable on Multisite, where accounts and content may belong to other sites.
Unsaved dialog changes. Data-entry dialogs in the core, boat and products extensions stay open when clicking outside them. Cancel, the close button and Escape ask before discarding changed fields, including checkboxes, selected files and rich text. Navigating away with unsaved dialog changes triggers the browser’s standard warning. Successful saves and checkout redirects do not trigger a discard warning. This protection keeps edits in the current page only; it does not store drafts or recover data after a browser crash.
System event types. The Event Types tab at /vis/calendar/#event-types includes seeded Cafe, Art (art exhibition) and Holiday (all closed) types with stable slugs cafe, art and holiday. These types can be edited but cannot be deleted, and their system flag and slugs cannot be changed through the event-type API. New Cafe and Art types have in_cafe_time enabled; Holiday and user-created types default to disabled. The checkbox stores whether events may take place during cafe opening hours; warning suppression and closure behavior will be implemented separately. Upgrades reuse existing matching slugs, preserving their IDs, names and settings while marking them as system types.
Regression tests live outside the plugin in the repository’s tests/pcio-vis-member-event/ folder and are not part of the distributed plugin. Run the PHP tests with php tests/pcio-vis-member-event/
Extensions. PCIO VIS Member Event is the core plugin for a family of optional add-ons (gallery, products, tickets, project management, home-owner association tools and Conventus sync). The bundled Dompdf and php-qrcode libraries are shared with those extensions for PDF and QR generation.
Google Calendar sync. The optional Sync Google Calendar job (Vis → Sync Jobs, disabled by default) pushes Vis events from one year back to one year ahead into one or more Google calendars. Each calendar takes either all events (including unpublished drafts) or only homepage-approved events whose event type has public access. Configure it under Vis → Google: paste a Google Cloud service-account key (JSON, Calendar API enabled), share each Google calendar with the service-account e-mail (“Make changes to events”), and add the calendars. The job creates missing Google events, updates changed ones (a failed update is retried on the next run) and deletes Google events in the window that no longer match a Vis event. Chosen event types can be shown as single-day events ending at 22:00, so long-running events such as exhibitions do not fill the calendar.
