Guide for Site Administrators
This guide is for the site administrator — the person responsible for the WordPress site itself: installing and updating the plugin, making sure email actually leaves the server and scheduled tasks run on time, granting access, and handling data, privacy and removal. Course administrators manage the content; you make the platform dependable. Content work is covered in the Administrator guide.
Getting started
Requirements
| Requirement | Minimum | Notes |
|---|---|---|
| WordPress | 6.7 | The admin screens and front-end pages load through WordPress Script Modules. Tested up to 7.1. |
| PHP | 8.0 | |
| LMS | Optional | Tutor LMS or LifterLMS. With neither, the plugin runs in standalone mode with its own Classes screen. |
| A working WordPress mail setup | Install an SMTP plugin (for example WP Mail SMTP, Post SMTP or FluentSMTP) and set up SPF, DKIM and DMARC for the sending domain. | |
| Scheduled tasks | WP-Cron that actually runs | On low-traffic sites, a real server cron job. |
| Database | Permission to create tables | Activation creates the plugin’s tables. |
Installing
- From WordPress.org: Plugins → Add New Plugin, search for Dantian Course Cadence, Install Now, Activate.
- From a zip: Plugins → Add New Plugin → Upload Plugin, choose the zip, Install Now, Activate Plugin.
Then check Course Cadence → Overview shows Welcome to Course Cadence, and Tools → Site Health shows the three Course Cadence checks passing. Full detail: Requirements & installation.
Which course source is used
There is no setting. On every page load the plugin picks Tutor LMS if it’s active, otherwise LifterLMS if active, otherwise standalone (native classes). If both LMSs are active, Tutor LMS wins. Decide on your source before anyone builds timelines: timelines belong to a specific course or class and do not carry over if you switch. A developer can pin a different source with a filter. See LMS integration and native classes.
What you see
The admin menu
Course Cadence (calendar icon) with Overview, Classes (standalone mode only, and only when Dantian Training Hub is not active), Timelines & Prompts, Email Delivery, Pending Suggestions and Settings. Every one of these requires the Manage options capability.
Site Health
Three checks under Tools → Site Health → Status, each tagged Learning Guidance:
| Check | Passing result | Failing result |
|---|---|---|
| LMS dependency | “Tutor LMS is active”, “LifterLMS is active” or “Native (Classes) is active” | Critical — “No supported LMS active” |
| Course Cadence database tables | “All Course Cadence database tables exist” (all six plugin tables) | Critical — “Course Cadence database tables are missing”, with a list |
| Course Cadence cron event scheduled | “Course Cadence weekly email cron is scheduled” with the next run | Recommended — “Course Cadence weekly email cron is not scheduled” |
These confirm set-up, not that mail is delivered. See Site Health.
Email Delivery → Send & Status
Next scheduled run in the site timezone (for example Mon 12 Oct 2026 at 09:00 (Australia/Sydney)), Dispatch cooldown, and Trigger weekly dispatch now. This is the quickest check that scheduled tasks are healthy. See Admin dashboards.
Admin notices you may see
- Course Cadence: a database update to version N did not fully complete… — an upgrade step failed after an update. Data is intact; back up, check the PHP error log, then contact support.
- The shared class schema (dthub_classes) appears incompatible. Class writes are paused to prevent data corruption. Please check that Dantian Training Hub and this plugin are both up to date. — update both plugins. Reading classes still works.
Emails to you
If Send Admin Trainer Digest is on (Settings → Emails, off by default), the digest recipient also gets Course Cadence: the weekly guidance dispatch is late when a dispatch runs more than a day late or never completes. Consider making yourself, or a shared inbox you watch, the Digest Recipient Email, or ask the course team to forward late-dispatch alerts.
What you do once
- Set the site timezone to a city (for example Melbourne), not a UTC offset, under Settings → General. The dispatch time, week boundaries and “today” all use it, and a city handles daylight saving.
- Make email reliable. Install and configure an SMTP plugin, add SPF, DKIM and DMARC records, then send a test from Course Cadence → Email Delivery → Test Emails to a test student account whose inbox you can read. Test emails go to the selected student’s real address.
- Make scheduled tasks reliable. Ask your host for a server cron job every 5 minutes, for example
wget -q -O - https://example.com.au/wp-cron.php?doing_wp_cron >/dev/null 2>&1, or with WP-CLIwp cron event run --due-now --quiet. Once it’s running, adddefine( 'DISABLE_WP_CRON', true );towp-config.php. Every 5 minutes keeps catch-up emails close to their five-minute delay; every 15 minutes is workable. See Making scheduled tasks reliable. - Grant access. Course administrators and college administrators each need a WordPress Administrator account (or another role with Manage options) — there is no narrower access. Trainers and students need ordinary accounts only.
- Designate instructors with care. Trainer status comes from the LMS (or the class Trainer list). On the screens the plugin provides, trainers can only suggest edits. However, the plugin’s REST API lets a course’s instructor create, edit, delete and pause that one course’s timelines and prompts, by design. Only make trusted staff instructors. See User roles and permissions.
- Privacy. Copy the “Dantian Course Cadence” section from Settings → Privacy (policy guide) into your privacy policy. Agree a Log Retention Period with the course team (Settings → System, default 365 days). See Privacy, data and uninstall.
- If Dantian Training Hub is also installed on a standalone site, turn off Training Hub’s “Delete all plugin data on uninstall”, because Training Hub’s uninstall removes the class tables Course Cadence relies on. See Integration with Dantian Training Hub.
Your routine
Each dispatch day (2 minutes, after the scheduled time):
- Email Delivery → Send & Status: Next scheduled run should now show next week. If it still shows today’s time, the scheduler didn’t fire — check the server cron, then click Trigger weekly dispatch now (it never re-sends anything already delivered).
- Email Delivery → Analytics: Failed should be 0. Failures retry hourly, up to three times; a steadily rising count means the mail setup is rejecting messages — check the SMTP plugin’s log.
Monthly:
- Tools → Site Health: all three Course Cadence checks pass.
- Update the plugin with a database backup first (see below).
- Handle any privacy export or erasure requests (below).
When something looks wrong: turn on WP_DEBUG and WP_DEBUG_LOG temporarily; the plugin writes lines starting with [DCC] to wp-content/debug.log, with email addresses masked. Turn debugging off afterwards.
Key features for site administrators
Scheduled tasks
| Task | Technical name | When |
|---|---|---|
| Weekly guidance dispatch | dantian_course_cadence_weekly_guidance_dispatch |
The Day of Week and Time of Day in Settings → Schedule (default Monday 09:00, site timezone) |
| Failed-email retry | dantian_course_cadence_retry_failed_emails |
Hourly; up to 25 records per run, three retries each |
| Log cleanup | dantian_course_cadence_privacy_cleanup |
Daily |
| Dispatch preview | dantian_course_cadence_dispatch_preview |
Preview Days Before Dispatch (default 3) before each dispatch; removed when set to 0 |
| Late-dispatch check | dantian_course_cadence_dispatch_watchdog |
Daily; re-creates a missing weekly event even with the digest off |
| Catch-up email | dantian_course_cadence_send_catchup_email |
One-off, about 5 minutes after an enrolment (Individual per course mode) |
| Combined catch-up email | dantian_course_cadence_send_catchup_email_consolidated |
One-off, about 5 minutes after an enrolment (Consolidated mode, the default) |
Loading any admin page re-creates any missing repeating task. A dispatch starts a 23-hour cooldown, so a manual Trigger weekly dispatch now within 23 hours before the scheduled time causes that scheduled run to be skipped. Each run sends at most 100 emails. See Scheduled tasks.
Data
Six plugin tables, each with your table prefix: dcc_timelines, dcc_prompts, dcc_prompt_edits, dcc_prompt_versions, dcc_emails_sent and dcc_audit_log. Two class tables, dthub_classes and dthub_class_members, are created on every site and shared with Dantian Training Hub. Settings are options starting with dcc_. Two values are stored on user accounts: the trainer view preference and each student’s per-course email opt-outs. No email bodies or email addresses are stored in the plugin’s tables. Include all of these in backups.
Privacy tools
The plugin appears as Dantian Course Cadence in Tools → Export Personal Data and Tools → Erase Personal Data. Erasure deletes a person’s suggestions, delivery records, preferences and (standalone) class memberships, and anonymises their audit entries, prompt versions and reviews — WordPress reports those as retained. Erase a student only after they’ve left the course; otherwise the plugin no longer knows what they received and may flag past weeks as missing. See Personal data export and erasure.
External connections
The WordPress.org copy makes no outbound connections. A copy downloaded directly from the Dantian store includes an update checker that contacts the store when WordPress checks for updates (site address, WordPress and PHP versions, plugin version and licence key — no student, trainer or course data). See External connections.
Performance and security
- Admin scripts and styles load only on Course Cadence’s own admin screens; front-end scripts and styles load only on pages where one of its shortcodes is displayed.
- Every admin screen and action checks Manage options; every trainer action checks the person instructs that course, and every student action checks enrolment in that course. Forms and background requests carry WordPress security tokens (nonces).
- Course Cadence admin screens send anti-framing and content-type security headers.
- Prompt attachment links are limited to your own site and an allow-list (drive.google.com, dropbox.com, onedrive.live.com plus any domains under Settings → Emails → Attachments).
Updating
Back up the database, then update from Dashboard → Updates (WordPress.org) or upload the newer zip and choose Replace current with uploaded. You don’t need to deactivate or delete first. Database changes apply once on the next page load, and missing scheduled tasks are re-created automatically. See Updating the plugin.
Deactivating and removing
- Deactivate removes every scheduled task, including queued catch-ups. No data is deleted; reactivating restores the schedule. Late enrolees from that window may need a manual catch-up.
- Delete always removes scheduled tasks and cached values. Everything else is kept unless Settings → System → Remove All Data on Uninstall was ticked and saved first. With it ticked, the six tables, all
dcc_settings and the user preferences are removed, and the shared class tables too — but only if Dantian Training Hub is not installed. On multisite, each site’s data is removed only where that site ticked the box.
See Uninstalling.
What you can’t do in version 1.0.0
- Grant partial admin access. The plugin adds no roles or capabilities; every admin screen checks Manage options.
- Pause a course from the admin screens. The pause flag on a timeline can only be changed through the REST API (an authenticated request using an Application Password). When a course team asks you to pause or unpause a course, follow Pausing and resuming email delivery. For planned stops, a break period is simpler.
- Export logs. There is no export from Email Delivery or the audit log; use your SMTP plugin’s log or a database export.
- See settings changes or privacy requests in the audit log. It records content changes only.
- Test delivery with Site Health. Use Email Delivery → Test Emails.
Common problems and fixes
| Problem | Fix |
|---|---|
| Weekly emails went out hours late, or not at all | Next scheduled run is in the past: WP-Cron isn’t being triggered (quiet site, DISABLE_WP_CRON with no server cron, or a blocked loopback). Add a server cron, then Trigger weekly dispatch now. |
| Not scheduled — reactivate the plugin to re-register the cron event. | Reload any admin page; if it persists, deactivate and reactivate. The daily watchdog also repairs it. |
| Tests fail with Failed to send email. Check your WordPress mail configuration. | WordPress can’t hand mail to a server. Configure SMTP. |
| Tests say sent but never arrive | Check spam, the SMTP plugin’s log, and SPF/DKIM/DMARC. |
| Catch-ups arrive long after enrolment | Same cause as late dispatch — run the server cron every 5 minutes. |
| Site Health: tables missing | Deactivate and reactivate; if they still don’t appear, the database user can’t create tables — ask your host. |
| Admin screens blank | Check the browser console; temporarily disable caching, optimisation or minification plugins (they can break Script Modules); confirm WordPress 6.7+ and PHP 8.0+; re-upload the release zip if files are missing. |
| Classes menu missing | An LMS is active, or Dantian Training Hub is active (manage classes under Training Hub → Classes). |
| A new trainer can’t see their course | Make them the course’s instructor in the LMS (or a Trainer in the class). On Tutor LMS with a persistent object cache, allow up to two hours. |
| A trainer’s view preference isn’t remembered | Expected for Subscriber accounts — saving it requires the ability to edit posts (Contributor or higher). It’s a convenience only; don’t raise roles just for this. |
| Data still there after deleting the plugin | Remove All Data on Uninstall wasn’t ticked. Reinstall, tick it, save, deactivate and delete again. |
More: Troubleshooting and Scheduled tasks and Site Health.
Who to contact
- Content, timelines, prompts, suggestions: the course administrators — see the Administrator guide.
- Hosting, server cron, database permissions, DNS: your hosting provider.
- Email delivery problems beyond WordPress: your email provider (via your SMTP plugin’s support).
- Plugin defects: the plugin’s WordPress.org support forum. Include the Site Health results and any
[DCC]lines from the debug log (with no personal details).