A curated collection of developer resources, examples, and demonstrations for WordPress 6.9 and beyond.
This repository serves as a comprehensive showcase for developers exploring the latest features, APIs, and capabilities introduced in WordPress 6.9 and future releases. Whether you're a seasoned WordPress developer or just getting started, you'll find practical examples and best practices to level up your development workflow.
🚧 TBD - Coming Soon
- WordPress 6.9 or higher
- PHP 8.0+
- Node.js 18+ (for development)
- npm or yarn
🚧 TBD - Coming Soon
The root of the repository is wp-content
├── themes/
├── plugins/
├── CONTRIBUTING.md
└── README.md
Vendor folders for plugins and themes with a composer.json are built and deployed automatically via .github/workflows/deploy-vendors.yml on every push to trunk or staging. It can also be triggered manually via Actions → Run workflow in the GitHub UI.
The workflow uses GitHub Environments to keep production and staging credentials and server URLs separate. The active environment is selected automatically based on the branch:
| Branch | Environment |
|---|---|
trunk |
production |
staging |
staging |
1. Create the environments
Go to Settings → Environments and create two environments: production and staging.
2. Add secrets to each environment
Under each environment, add the following secrets (same names, different values):
| Name | Description |
|---|---|
SFTP_USER |
SFTP username for this environment |
SFTP_PASSWORD |
SFTP password for this environment |
SFTP_KNOWN_HOSTS |
SSH host fingerprint for sftp.wp.com — get it by running ssh-keyscan sftp.wp.com in your terminal and pasting the full output |
The destination server and paths are hardcoded in the workflow file itself (sftp://sftp.wp.com/htdocs/wp-content/.../vendor/).
To include a new plugin or theme in the automated vendor deployment:
1. Edit .github/workflows/deploy-vendors.yml and add a composer install step:
- name: Install dependencies (your-package-name)
working-directory: plugins/your-package-name # or themes/your-package-name
run: composer install --no-dev --optimize-autoloader --no-interactionAdd an upload step immediately after:
- name: Upload your-package-name vendor folder
if: ${{ inputs.dry_run != true && hashFiles('plugins/your-package-name/vendor/**') != '' }}
uses: Automattic/FTP-Deploy-Action@3.1.2
with:
ftp-server: sftp://sftp.wp.com/htdocs/wp-content/plugins/your-package-name/vendor/ # or themes/your-package-name/vendor/
ftp-username: ${{ secrets.SFTP_USER }}
ftp-password: ${{ secrets.SFTP_PASSWORD }}
local-dir: plugins/your-package-name/vendor/ # or themes/your-package-name/vendor/
git-ftp-args: --all
known-hosts: ${{ secrets.SFTP_KNOWN_HOSTS }}No additional secrets or variables are needed.
We welcome contributions from the community! Whether it's fixing a bug, adding a new example, or improving documentation, your input is valuable.
Please read our CONTRIBUTING.md for detailed information on:
- Code of Conduct
- Development workflow
- Pull request process
- Coding standards
- How to report issues
- WordPress 6.9 Release Notes
- WordPress Developer Resources
- Block Editor Handbook
- Theme Handbook
- Plugin Handbook
This project is licensed under the GPLv2 or later - the same license as WordPress itself.
- The WordPress Core Team
- All contributors to this showcase
- The broader WordPress community
Built with ❤️ for the WordPress community
Have questions or suggestions? Open an issue or start a discussion!