WP Manifestindependent plugin directory
manifest / privacy / admin-terms-acceptance

MammothWP Acceptance Logs

MammothWP Acceptance Logs: versioned, role-scoped terms acceptance logs for WordPress.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/mammothwp/admin-terms-acceptance/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

MammothWP Acceptance Logs

MammothWP Acceptance Logs

Log that your users accepted your terms. Versioned, role-scoped and tamper-evident, with a permanent archive of every version.

  • Versioned archive of every published text; versions are never deleted.
  • Tamper-evident log: two signatures per record plus a hash chain, with a verifier.
  • Role-scoped prompt: popup with "skip for now" and a persistent notice.
  • GDPR tooling: exporter, eraser, retention anonymisation, privacy-policy text.
  • One definition, four surfaces: admin, REST, WP-CLI and the Abilities API (via wp-kit).
  • Not consent management: an access-control and contractual-compliance record (GDPR Art. 6(1)(b), (f)).

Screenshots live in .wordpress-org/ (screenshot-N.png, regenerated by bin/screenshots/).

Download and install

The wordpress.org listing is pending review. Until it is live, install from this repository, as described on https://mammothwp.com/plugins/mammothwp-acceptance-logs/:

  1. Download the ZIP of main from GitHub (Code → Download ZIP).
  2. Unzip it, rename the folder admin-terms-acceptance-main to mammothwp-acceptance-logs, and zip that folder again.
  3. In WordPress go to Plugins → Add New → Upload Plugin, choose the zip and install it.
  4. Activate the plugin, then open Settings → Terms & Conditions.

The GitHub tree has no vendor/ directory. The core acceptance flow works without it, but the REST API, WP-CLI, the Abilities API, the Support screen and PDF receipts need the dependencies. Run this inside the plugin folder before zipping (or on the server):

composer install --no-dev --optimize-autoloader

Requires WordPress 6.2+ and PHP 8.1+. To build a distributable zip from a checkout, use composer build (see Contributing).

Usage

Full details in docs/usage.md.

Surface Example
Admin Settings → Terms & Conditions; Users → Terms acceptance log
REST GET /wp-json/mmwp/v1/terms/acceptances?version_id=3 (plugin managers)
WP-CLI wp mmwp terms publish --content="$(cat terms.html)" --only-if-changed
Abilities mmwp-acceptance-logs/list-acceptances (read-only)

Regenerating screenshots

The four wordpress.org screenshots are produced by bin/screenshots/: a fresh WordPress with Twenty Twenty-Four, demo users (@example.com), two published versions and six signed acceptances, captured with Playwright at 1280px.

vendor/bin/mmwp-release build
# needs an empty MySQL/MariaDB database and WP-CLI
DB_NAME=wp DB_USER=root DB_HOST=127.0.0.1:3306 \
  bin/screenshots/install.sh /tmp/shots-wp mammothwp-acceptance-logs.zip
cd bin/screenshots && npm install && npx playwright install chromium
WP_DIR=/tmp/shots-wp node capture.mjs   # writes ../../.wordpress-org/screenshot-N.png

Shots: 1 settings (cropped), 2 acceptance log after "Verify integrity", 3 popup for a Subscriber on an older version, 4 public block. Optimise the PNGs losslessly (e.g. oxipng -o4) if any grows past ~400 KB.

Hooks

Every hook is mmwp_terms_-prefixed and listed in HOOKS.md.

Support

Use the support forum on wordpress.org, or e-mail info@mammothwp.com. The plugin never sends anything on its own; see docs/privacy.md.

Contributing

composer install
composer lint          # phpcs (WPCS + PHPCompatibilityWP) and phpstan
bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1 latest
composer test:phpunit
mmwp-release build           # zip from .distignore, for Plugin Check

Read CLAUDE.md first: several rules (append-only evidence, frozen signature field orders) are load-bearing.