moderntribe / tribe-alerts
Tribe Alerts WordPress Plugin
Package info
github.com/moderntribe/tribe-alerts
Type:wordpress-plugin
pkg:composer/moderntribe/tribe-alerts
Requires
- php: >=8.0
- ext-json: *
- ext-readline: *
- enshrined/svg-sanitize: ^0.22
- johnbillion/extended-cpts: ^5.1
- league/plates: ^3.6
- moderntribe/tribe-libs: ^5.0
- spatie/data-transfer-object: ^2.8
Requires (Dev)
- behat/gherkin: >=4.4 <4.12
- codeception/module-asserts: ^1.3.1
- codeception/module-cli: ^1.1.1
- codeception/module-db: ^1.2
- codeception/module-filesystem: ^1.0.3
- codeception/module-phpbrowser: ^1.0.3
- codeception/module-webdriver: ^1.4.1
- codeception/util-universalframework: ^1.0
- composer/installers: ^2.0
- larapack/dd: ^1.1
- lucatume/function-mocker: ^2.0
- lucatume/wp-browser: ^3.2
- moderntribe/coding-standards: ^3.0
- nickford/acf-swatch: ^1.0
- wpengine/advanced-custom-fields-pro: ^6.4
README
Displays a customizable banner on the screen and remembers when users have dismissed it.
Display custom banner alerts on your website.
Requirements
- Lando (Docker-backed local stack)
- PHP 7.4+ (satisfied inside Lando; match
composer.jsonplatform when running Composer on the host) - Advanced Custom Fields Pro (installed via Composer; see Composer authentication)
- For assets: nvm or fnm, Node (see
.nvmrc), Yarn 1.22+, npm 8.3+
Run locally (Lando)
1. Environment file for WordPress / database
Copy the example env file Lando loads:
cp dev/lando/.env.example dev/lando/.env
Edit dev/lando/.env if needed. WP_HOME and WP_SITEURL must match the hostname Lando exposes (see proxy → appserver_nginx in .lando.yml; currently https://tribe-alert.lndo.site).
2. Composer authentication (ACF & private packages)
composer.json pulls ACF Pro from connect.advancedcustomfields.com and nickford/acf-swatch from GitHub over SSH. Composer reads auth.json in the project root for HTTP Basic auth. That file is listed in .gitignore and must not be committed.
Option A — from the sample (Modern Tribe / 1Password)
auth-sample.json is a template that expects 1Password CLI secret references. From the repo root:
cp auth-sample.json auth.json op inject -i auth-sample.json -o auth.json
Adjust vault/item names via environment variables if your team uses different 1Password paths (see placeholders in auth-sample.json).
Option B — manual auth.json
Create auth.json in the project root with your ACF subscription credentials (from your ACF account: license key and the signed download URL):
{
"http-basic": {
"connect.advancedcustomfields.com": {
"username": "<your-acf-license-key>",
"password": "<your-acf-download-url-or-token-as-documented-by-acf>"
}
}
}
Use the exact username/password pair ACF documents for Composer.
GitHub (private VCS package)
For git@github.com:nickforddesign/acf-swatch.git, ensure your machine (or the Lando container) can use that SSH key. Typical approaches:
- Load your SSH agent on the host before
lando start, or - Add a deploy key / personal key inside the appserver and run
composer installthere afterlando ssh.
If Composer fails on acf-swatch, fix SSH access to GitHub first.
3. Start Lando
From the repository root:
lando start
On start, Lando runs composer install and dev/lando/install-wp.sh (WordPress download + wp core install when wp-config.php is missing).
4. Open the site
Use the URL from .lando.yml proxy settings (e.g. https://tribe-alert.lndo.site). MailHog is available per your Lando tooling (lando info).
5. Activate the plugin
In WP Admin → Plugins, activate Tribe Alerts (and other required plugins such as ACF Pro if not auto-activated).
Composer and vendor
- You may run
composer installon the host (withauth.jsonpresent) or rely onlando composer install/ thepost-starthook. - If
vendorlooks empty on the host while dependencies work in the container, check Lando file-sharing /excludesin.lando.yml.
Front end
Front-end builds use Laravel Mix.
Building
nvm use
yarn install
Usage
Build for development:
yarn dev
Watch for file changes:
yarn watch
Poll for file changes:
yarn watch-poll
Watch with hot module replacement:
yarn hot
Build for production:
yarn production
Run the Mix CLI directly (same underlying binary the scripts use):
npx mix
See more options: npx mix --help
Pull requests / building
Run yarn prod before submitting a PR so resources/dist contains the latest production assets.
Installing this plugin
Every published release creates a tribe-alerts.zip (built, vendor-scoped plugin) shortly after the release is published. To install manually, download the zip from a release and extract it into your WordPress wp-content/plugins directory.
Composer (consumer projects)
The best way to include the release zip is with ffraenz/private-composer-installer.
Add a custom repository to your project’s repositories in composer.json:
"repositories": [ { "type": "package", "package": { "name": "moderntribe/tribe-alerts", "version": "1.1.0", "type": "wordpress-plugin", "dist": { "type": "zip", "url": "https://github.com/moderntribe/tribe-alerts/releases/download/{%VERSION}/tribe-alerts.zip" }, "require": { "ffraenz/private-composer-installer": "^5.0" } } } ]
Note: Bump the version above and run
composer updateto upgrade the plugin later.
Add the package to require:
"require": { "moderntribe/tribe-alerts": "*" }
Point Composer installers at your WordPress layout (adjust paths for your project):
"extra": { "wordpress-install-dir": "wp", "installer-paths": { "wp-content/mu-plugins/{$name}": [ "type:wordpress-muplugin" ], "wp-content/plugins/{$name}": [ "type:wordpress-plugin" ], "wp-content/themes/{$name}": [ "type:wordpress-theme" ] } }
Allow the plugins in config:
"allow-plugins": { "composer/installers": true, "ffraenz/private-composer-installer": true }
Install:
composer update
Displaying an alert
The banner is output on the wp_footer hook by default. To render it yourself:
<?php if ( function_exists( '\Tribe\Alert\tribe_alert' ) && function_exists( '\Tribe\Alert\render_alert' ) ) { \Tribe\Alert\render_alert(); } ?>
Disable automatic wp_footer output in wp-config.php:
define( 'TRIBE_ALERTS_AUTOMATIC_OUTPUT', false );
Customize the alert view markup
Filter the view directory, for example:
add_filter( 'tribe/alerts/view_directory', static fn ( string $directory ) => get_stylesheet_directory() . '/components/alerts', 10, 1 );
Copy resources/views/alert.php into that folder and customize.
ACF swatch field options
Color options are off by default. Enable in wp-config.php:
define( 'TRIBE_ALERTS_COLOR_OPTIONS', true );
Filter swatch colors:
add_filter( 'tribe/alerts/color_options', static fn ( array $options ) => [ '#880ED4' => [ 'name' => esc_html__( 'Purple', 'tribe-alerts' ), 'class' => 'purple-mono', ], '#8155BA' => [ 'name' => esc_html__( 'Violet', 'tribe-alerts' ), 'class' => 'violet', ], '#323E42' => [ 'name' => esc_html__( 'Charcoal', 'tribe-alerts' ), 'class' => 'charcoal', ], ], 10, 1 );
Default CSS class prefix is tribe-alerts__theme → tribe-alerts__theme-$name. Filter the prefix:
add_filter( 'tribe/alerts/color_options/css_class_prefix', static fn ( string $prefix ) => 'new-prefix', 10, 1 );
CI note
GitHub Actions workflows under .github/workflows/ may still reference the old dev/docker stack. If those files were removed in your branch, update CI to match Lando or another test runner before relying on green builds.
Credits
- Based on Spatie Skeleton
License
GNU General Public License GPLv2 (or later). See LICENSE.md.