PHPackages                             yootheme/starter-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. yootheme/starter-plugin

ActiveProject

yootheme/starter-plugin
=======================

YOOtheme Pro - Starter Plugin

1.0.4(1y ago)19546↓50%5[3 issues](https://github.com/yootheme/starter-plugin/issues)MITPHP ^8.0

Since Aug 20Pushed 5mo ago5 watchersCompare

[ Source](https://github.com/yootheme/starter-plugin)[ Packagist](https://packagist.org/packages/yootheme/starter-plugin)[ RSS](/packages/yootheme-starter-plugin/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (7)Used By (0)

 [![](https://private-user-images.githubusercontent.com/321081/367198627-5fabe4cb-8fdc-4132-8281-56f87774b414.svg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ4OTM1MjIsIm5iZiI6MTc3NDg5MzIyMiwicGF0aCI6Ii8zMjEwODEvMzY3MTk4NjI3LTVmYWJlNGNiLThmZGMtNDEzMi04MjgxLTU2Zjg3Nzc0YjQxNC5zdmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzMwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMzMFQxNzUzNDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zMDQwODY2ODEwYjk2YzczMTE1OTM5NDIxNWM0YmM2N2IyODYzZDU5NDc3ODI0MTMzMTQ4NjlkMjRjOTgyZDg4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.eYYpcxUydFBPwZcr6ChhyMR4iEeKZWe_Ep2w8mG_UlA)](https://private-user-images.githubusercontent.com/321081/367198627-5fabe4cb-8fdc-4132-8281-56f87774b414.svg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ4OTM1MjIsIm5iZiI6MTc3NDg5MzIyMiwicGF0aCI6Ii8zMjEwODEvMzY3MTk4NjI3LTVmYWJlNGNiLThmZGMtNDEzMi04MjgxLTU2Zjg3Nzc0YjQxNC5zdmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzMwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMzMFQxNzUzNDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zMDQwODY2ODEwYjk2YzczMTE1OTM5NDIxNWM0YmM2N2IyODYzZDU5NDc3ODI0MTMzMTQ4NjlkMjRjOTgyZDg4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.eYYpcxUydFBPwZcr6ChhyMR4iEeKZWe_Ep2w8mG_UlA)

Starter Plugin
==============

[](#starter-plugin)

The YOOtheme Starter Plugin is a ready-to-use starter kit to help you build your next [YOOtheme Pro](https://yootheme.com) extension. Easily create a module for YOOtheme Pro to extend its functionalities. For example, add setting panels to the customizer, elements to the page builder or load needed asset files into the site. It takes care of all the tedious tasks, like the integration into Joomla or WordPress, and helps with distribution, versioning and updating of your YOOtheme Pro extension, so you can focus on the actual features.

Requirements
------------

[](#requirements)

Install [Composer v2.5+](https://getcomposer.org/download/), which is used to install PHP packages.

Also, use Node and npm to install [Task](https://taskfile.dev/), which is needed to run build tasks.

```
npm install -g @go-task/cli
```

Create a new plugin
-------------------

[](#create-a-new-plugin)

To create a new plugin, run Composer's `create-project` command in the plugins folder of WordPress `wp-content/plugins` or Joomla `plugins/system`. Replace `PLUGIN_NAME` with the name of your plugin, for example `myplugin`.

```
composer create-project yootheme/starter-plugin PLUGIN_NAME
```

Now run the `create:plugin` command in the newly created plugin folder.

```
composer create:plugin
```

You will be asked for additional plugin information which will be used in the plugin metadata.

- **Enter plugin title:** The plugin title, for example `My Plugin`
- **Enter plugin description:** The plugin description
- **Enter author name:** The author Name
- **Enter author email:** The author email
- **Enter author url:** The author URL, for example `https://example.com`
- **Enter update server url:** The URL to the update server file, for example `https://example.com/updates`

This will create the required plugin files in the `build` folder and the `.env` configuration inside your plugin folder.

```
.
├── build                  # Plugin blueprint files
│   ├── joomla
│       ├── myplugin.php   # Joomla plugin
|       ├── myplugin.xml   # Joomla plugin metadata
│   ├── wordpress
│       ├── myplugin.php   # WordPress plugin
|   └── Taskfile.yml       # build tasks
├── .env                   # Metadata
├── vendor                 # Development dependencies
├── README.md
└── Taskfile.yml           # Main Taskfile

```

Set up the plugin
-----------------

[](#set-up-the-plugin)

To make your new plugin available in WordPress or Joomla, run the corresponding setup task in the plugin root folder. This will copy the necessary plugin files from the `build` folder to the plugin root folder.

```
task setup-wordpress
task setup-joomla
```

Now the plugin can be discovered and installed in WordPress or Joomla.

Create a new module
-------------------

[](#create-a-new-module)

To create a new YOOtheme Pro module, which is a package of code that extends the functionality of YOOtheme Pro, run the following command and replace `MODULE_NAME` with the name of your module, for example `my-module`.

```
composer create:module MODULE_NAME
```

You will be asked further questions to configure the module.

- **Enter module namespace:** Enter a PHP namespace, for example `MyPlugin\MyModule`
- **Add asset files example? \[y/N\]** Press Enter for *No*.
- **Add settings example? \[y/N\]** Press Enter for *No*.
- **Add custom LESS example? \[y/N\]** Press Enter for *No*.
- **Add custom source example? \[y/N\]** Press Enter for *No*.
- **Add translation files example? \[y/N\]** Press Enter for *No*.

Read the [Modules documentation](https://yootheme.com/support/yootheme-pro/joomla/developers-modules) to learn more about the created files and code examples.

**Note:** Add `wordpress` or `joomla` to the name for system-specific modules, for example `my-module-wordpress` or `my-module-joomla`. The build tasks will only copy the relevant modules into the WordPress and Joomla zip archives.

Create a new element
--------------------

[](#create-a-new-element)

To create a new element, run the following command and replace `ELEMENT_NAME` with the name of your element, for example `my-element`. If there are multiple modules, choose a module from the provided list.

```
composer create:element ELEMENT_NAME
```

Optionally, define the module where the element should be created.

```
composer create:element ELEMENT_NAME MODULE_NAME
```

You will be asked further questions to configure the element.

- **Enter element title:** The element title, for example `My Element`
- **Enter element group:** Press Enter for `Custom`.
- **Create multiple items element? \[y/N\]** Press Enter for *No*.
- **Include Element transform example? \[y/N\]** Press Enter for *No*.

Read the [Elements documentation](https://yootheme.com/support/yootheme-pro/joomla/developers-elements) to learn more about the created files and code examples.

Build distribution files
------------------------

[](#build-distribution-files)

To create an installable zip archive of the plugin for WordPress and Joomla, run the following `build` task. The created zip files are located in the `dist` folder.

```
task build
```

Alternatively, create the archives individually.

```
task build-wordpress
task build-joomla
```

Publishing and versioning
-------------------------

[](#publishing-and-versioning)

To raise the version number of your plugin or change metadata, like the plugin title or description, edit the `.env` file in the root folder.

```
TITLE='My Plugin'
NAME='myplugin'
VERSION='0.0.1'
DESCRIPTION='Lorem ipsum'
DATE='{{ now | date "2006-01-02" }}'
COPYRIGHT='Copyright (C)'
LICENSE='GNU General Public License'
AUTHOR='My Company'
AUTHOREMAIL='me@example.com'
AUTHORURL='https://example.com'
```

After changing the metadata, re-run the corresponding Joomla or WordPress [setup task](#user-content-set-up-the-plugin) to update the plugin files and run the [build task](#user-content-build-distribution-files) to create new distribution files.

Update Server
-------------

[](#update-server)

To enable 1-click updates in WordPress and Joomla, run the [build task](#user-content-build-distribution-files) to generate the necessary update server files for WordPress `dist/update.json` and Joomla `dist/update.xml`. These files are configured based on the package information in the `.env` file.

```
# Update server
UPDATEURI='https://example.com/updates'

# Package information
STABILITY='stable'
DOWNLOADURL='https://example.com/downloads'
PHPMINIMUM='7.4'
JOOMLAMINIMUM='(5\.[01]|4\.[01234]|3\.10)\.'
WORDPRESSMINIMUM='6.2'
```

Upload these files to the `UPDATEURI` URL. This URL is where your plugin checks for updates and retrieves the associated download file. Ensure the zip archives from the `dist` folder are uploaded to the location specified in `DOWNLOADURL`.

Updating commands and tasks
---------------------------

[](#updating-commands-and-tasks)

The command and task scripts have their own [starter-utils](https://github.com/yootheme/starter-utils) Github repository. To update the package to the latest version, run `composer update` from time to time.

Github
------

[](#github)

To make your plugin a Git repository use `git init -b main` and follow the steps under [Adding a local repository to GitHub using Git](https://docs.github.com/en/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github#adding-a-local-repository-to-github-using-git).

License
-------

[](#license)

[MIT](https://opensource.org/licenses/MIT)

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance52

Moderate activity, may be stable

Popularity26

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 51.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~21 days

Total

5

Last Release

549d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b86a9fe40478c59c82c368e0c25bc6f28a1986f858e39bb0a2a25a316a0c4cb1?d=identicon)[steffans](/maintainers/steffans)

---

Top Contributors

[![hendrikbehncke](https://avatars.githubusercontent.com/u/4417047?v=4)](https://github.com/hendrikbehncke "hendrikbehncke (34 commits)")[![steffans](https://avatars.githubusercontent.com/u/321013?v=4)](https://github.com/steffans "steffans (20 commits)")[![saschadube](https://avatars.githubusercontent.com/u/321081?v=4)](https://github.com/saschadube "saschadube (9 commits)")[![hannazn](https://avatars.githubusercontent.com/u/32571685?v=4)](https://github.com/hannazn "hannazn (2 commits)")[![miljan-aleksic](https://avatars.githubusercontent.com/u/513275?v=4)](https://github.com/miljan-aleksic "miljan-aleksic (1 commits)")

---

Tags

wordpressjoomlayootheme

### Embed Badge

![Health badge](/badges/yootheme-starter-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/yootheme-starter-plugin/health.svg)](https://phpackages.com/packages/yootheme-starter-plugin)
```

###  Alternatives

[phpcompatibility/phpcompatibility-all

A set of rulesets for PHP\_CodeSniffer to check for PHP cross-version compatibility issues and opportunities to modernize code in PHP projects.

1361.7k](/packages/phpcompatibility-phpcompatibility-all)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
