- Close to core: the design rule behind most of the others, and why some good ideas belong in a companion plugin instead.
- Companion plugins: building on GatherPress rather than in it, starting from the GatherPress Awesome template.
- Data model: post types, taxonomies, meta, the events table and every REST route.
- URLs and permalinks: every public URL, where its slug comes from, and when rewrite rules flush.
- Multisite: what is per site and what is network wide, from activation through uninstall.
- GatherPress Alpha: the companion plugin that runs data migrations, and why it is version-locked to core.
- Demo data and prepared playgrounds: the blueprints, the demo content, and where both are used.
Standalone guides for customizing specific GatherPress features through hooks:
- Event duration filters: customize the editor's Duration control (
gatherpress.durationOptions,gatherpress.durationDefault). - Venue address format: locale-aware ordering of geocoded address labels via translatable format strings, plus the
gatherpress_formatted_addressfilter. - Plugin lifecycle: the load sequence and the
gatherpress_loadedhook, when GatherPress's classes are ready and how load order affects catching the hook. - Taxonomies: registering your own taxonomy across every event post type, attaching categories and tags, and renaming or detaching Topics.
- WP-CLI commands:
wp gatherpress event rsvpandwp gatherpress settings import|export, and how to add a command of your own. - Content import and export: how event dates survive a WXR round trip, and how to carry your own data with them.
For every hook GatherPress exposes, see the auto-generated hook reference and the hook naming convention.
If you have Docker installed, you could use the wp-env package to load a WordPress development environment with this plugin automatically activated.
Although you can download a zip file of the plugin at:
https://github.com/GatherPress/gatherpressIf you want to help out with development, we suggest forking the code to your own GitHub repository and creating a branch from there.
Once you've forked the repo, you should now have a mirrored copy of GatherPress, but on your profile's URL, or something like this:
https://github.com/YourGitHubUsername/gatherpresswhere YourGitHubUsername corresponds to your login name for GitHub.
To clone a local copy, open a terminal window and run the following command:
git clone git@github.com:YourGitHubUsername/gatherpress.gitif you have your SSH keys set up. If not, run:
git clone https://github.com/YourGitHubUsername/gatherpress.gitOnce you have forked the GatherPress repo, you can also change the folder name of your version of the repository by going into your settings of your repo on GitHub's website.
https://github.com/pbrocks/gatherpressIn a terminal window, run:
npm i -g @wordpress/envIn your terminal window, run:
cd gatherpress
wp-env startYou should then see that a development site has been configured for you on localhost port 8889
To further customize the development site using your favorite or most familiar development plugins or themes, you are able to add whatever you like because of this code added to the .wp-env.json file:
"mappings": {
"wp-content/plugins": "./wp-core/plugins",
"wp-content/themes": "./wp-core/themes"
},In fact, after the initial setup, you may notice that in your code editor, there is now a wp-core folder containing the default plugins and themes, but it is grayed out, so the contents of this folder will not be committed to the GatherPress repository.
- Install the version of Node in
.nvmrc.. NVM can be used to achieve this. - Install Composer
- In your terminal window,
cdto thegatherpressdirectory - Run
npm installto get node dependencies - Run
npm run buildto compile scripts and styles - Run
composer installto get PHPUnit dependencies
Simply run:
wp-env stopFor more info on wp-env package, consult the Block Handbook's page.



