Skip to content

Latest commit

 

History

History

developer

README.md

Developer Documentation

Start here

  • 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.

Feature guides

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_address filter.
  • Plugin lifecycle: the load sequence and the gatherpress_loaded hook, 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 rsvp and wp 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.

.wp-env

If you have Docker installed, you could use the wp-env package to load a WordPress development environment with this plugin automatically activated.

Local Development

Fork this repository

Although you can download a zip file of the plugin at:

https://github.com/GatherPress/gatherpress

If you want to help out with development, we suggest forking the code to your own GitHub repository and creating a branch from there.

Clone this repository

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/gatherpress

where 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.git

if you have your SSH keys set up. If not, run:

git clone https://github.com/YourGitHubUsername/gatherpress.git

Note about customizing the URL

Once 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/gatherpress

PBrocks GatherPress repo

Install wp-env globally

In a terminal window, run:

npm i -g @wordpress/env

Change directory and run wp-env

In your terminal window, run:

cd gatherpress
wp-env start

You should then see that a development site has been configured for you on localhost port 8889

Development Site Login

Log in to Site / Log into Site

Development Site Login

Development Site Plugins/Themes

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.

Development Site Plugins/Themes

Installing Dependencies

  1. Install the version of Node in .nvmrc.. NVM can be used to achieve this.
  2. Install Composer
  3. In your terminal window, cd to the gatherpress directory
  4. Run npm install to get node dependencies
  5. Run npm run build to compile scripts and styles
  6. Run composer install to get PHPUnit dependencies

To shut down your development session

Simply run:

wp-env stop

For more info on wp-env package, consult the Block Handbook's page.