mirror of
https://github.com/oblakstudio/wp-plugin-installer.git
synced 2025-11-13 14:05:53 +08:00
docs: Added some nice documentation
This commit is contained in:
parent
dd2c9b1fec
commit
4d55c3df2e
4 changed files with 185 additions and 15 deletions
|
|
@ -21,3 +21,6 @@ indent_size = 2
|
|||
|
||||
[{composer.json,package.json}]
|
||||
indent_size = 4
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
|
|
|||
35
.gitattributes
vendored
35
.gitattributes
vendored
|
|
@ -1,15 +1,20 @@
|
|||
/.github export-ignore
|
||||
.yarn export-ignore
|
||||
/tests export-ignore
|
||||
/.editorconfig export-ignore
|
||||
/.gitattributes export-ignore
|
||||
/.gitignore export-ignore
|
||||
/.releaserc export-ignore
|
||||
/.yarnrc.yml export-ignore
|
||||
/CHANGELOG.md export-ignore
|
||||
/LICENSE export-ignore
|
||||
/README.md export-ignore
|
||||
/package.json export-ignore
|
||||
/yarn.lock export-ignore
|
||||
/phpcs.xml export-ignore
|
||||
/phpunit.xml export-ignore
|
||||
/.github export-ignore
|
||||
/.yarn export-ignore
|
||||
/docs export-ignore
|
||||
/tests export-ignore
|
||||
/.codeclimate.yml export-ignore
|
||||
/.editorconfig export-ignore
|
||||
/.gitattributes export-ignore
|
||||
/.gitignore export-ignore
|
||||
/.releaserc export-ignore
|
||||
/.yarnrc.yml export-ignore
|
||||
/CHANGELOG.md export-ignore
|
||||
/CODE_OF_CONDUCT.md export-ignore
|
||||
/CONTRIBUTING.md export-ignore
|
||||
/LICENSE export-ignore
|
||||
/README.md export-ignore
|
||||
/SECURITY.md export-ignore
|
||||
/package.json export-ignore
|
||||
/yarn.lock export-ignore
|
||||
/phpcs.xml export-ignore
|
||||
/phpunit.xml export-ignore
|
||||
|
|
|
|||
27
CONTRIBUTING.md
Normal file
27
CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Contribution Guidelines
|
||||
|
||||
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
|
||||
|
||||
## Reporting bugs / Feature requests
|
||||
|
||||
If you think you have found a bug, please [open an issue](https://github.com/oblakstudio/wp-plugin-installer/issues/new) and provide as much information as possible.
|
||||
|
||||
## Contributing
|
||||
|
||||
If you would like to contribute code to this project you can do so through GitHub by forking the repository and sending a pull request.
|
||||
|
||||
## Coding standards
|
||||
|
||||
This project follows the [WordPress Coding Standards](https://make.wordpress.org/core/handbook/best-practices/coding-standards/). Pull requests should follow these standards as well, and are run against PHPCS to ensure this.
|
||||
|
||||
## Unit tests
|
||||
|
||||
This project wants to use [PHPUnit](https://phpunit.de/) for unit testing - but no tests are written so far. If you would like to contribute tests, please do so.
|
||||
|
||||
## Commit messages
|
||||
|
||||
This project follows the [AngularJS commit message conventions](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit) for commit messages. This gives us more readable history, and easy follow of changes across versions. It also enables automatic versioning and changelog generation.
|
||||
|
||||
## Documentation
|
||||
|
||||
This project uses [Docsify](https://docsify.js.org/) for documentation. If you would like to contribute to the documentation, please do so.
|
||||
135
README.md
135
README.md
|
|
@ -1,5 +1,140 @@
|
|||
<center>
|
||||
|
||||
# 📦 WordPress plugin installer / activator
|
||||
## Singleton class which simplifies the installation and activation of WordPress plugins.
|
||||
|
||||
<hr>
|
||||
|
||||

|
||||

|
||||
[](https://github.com/semantic-release/semantic-release)
|
||||
|
||||

|
||||
[](https://github.com/oblakstudio/wp-plugin-installer/actions/workflows/release.yml)
|
||||
|
||||

|
||||

|
||||
|
||||
</center>
|
||||
|
||||
## Highlights
|
||||
* Based on [WooCommerce](https://woocommerce.com) installation and activation process.
|
||||
* Automatically updates plugin and database schema versions.
|
||||
* Handles database table creation and updates (Schema enforcement).
|
||||
* Provides [WP-CLI](https://wp-cli.org) commands for manual updates, and database table creation / verification.
|
||||
* Easily extendable
|
||||
|
||||
## Installation
|
||||
|
||||
We officially support installing via composer only
|
||||
|
||||
### Via composer
|
||||
```bash
|
||||
composer require oblak/wp-plugin-installer
|
||||
```
|
||||
|
||||
## Basic Usage
|
||||
|
||||
``Base_Plugin_Installer`` is an **abstract** singleton class which can be extended to create a plugin installer class. The class is responsible for installing and activating the plugin, and updating the plugin and database schema versions.
|
||||
You need to extend it and implement the ``set_defaults()`` method, which is responsible for setting the default values for the class.
|
||||
|
||||
If your plugin needs non-wp database tables, you need to implement the ``get_schema()`` method, and set the ``has_tables`` property to ``true``, so that the installer can create and update the tables.
|
||||
|
||||
Class depends on [Action Scheduler](https://actionscheduler.org) for running update callbacks in the background.
|
||||
If your plugin uses Action Scheduler, or depends on an another plugin, which has Action Scheduler, you can skip the activation step.
|
||||
|
||||
### 1. Define your installer class
|
||||
|
||||
```php
|
||||
<?php
|
||||
namespace Vendor\My_Plugin;
|
||||
|
||||
use Oblak\WP\Base_Plugin_Installer;
|
||||
|
||||
class My_Plugin_Installer extends Base_Plugin_Installer {
|
||||
|
||||
/**
|
||||
* Singleton instance
|
||||
*
|
||||
* Since we're inheriting from a singleton class, we need to define this property.
|
||||
*
|
||||
* @var My_Plugin_Installer
|
||||
*/
|
||||
protected static $instance;
|
||||
|
||||
/**
|
||||
* Set the installer defaults.
|
||||
*/
|
||||
protected function set_defaults() {
|
||||
$this->name = 'My Plugin'; // Plugin name.
|
||||
$this->slug = 'my-plugin'; // Plugin slug.
|
||||
$this->version = '1.0.0'; // Plugin version (current).
|
||||
$this->db_version = '1.0.0'; // Database schema version (current).
|
||||
$this->has_tables = true; // Does the plugin have database tables?
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the database schema.
|
||||
*
|
||||
* @return string The database schema.
|
||||
*/
|
||||
protected function get_schema() {
|
||||
global $wpdb;
|
||||
|
||||
$collate = '';
|
||||
|
||||
if ( $wpdb->has_cap( 'collation' ) ) {
|
||||
$collate = $wpdb->get_charset_collate();
|
||||
}
|
||||
|
||||
return
|
||||
"
|
||||
CREATE TABLE `{$this->get_table_name()}` (
|
||||
ID bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
name varchar(255) NOT NULL,
|
||||
created_at datetime NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
) {$collate}
|
||||
";
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Action Scheduler activation
|
||||
```php
|
||||
require_once __DIR__ . 'vendor/woocommerce/action-scheduler/action-scheduler.php';
|
||||
```
|
||||
|
||||
### 3. Include the autoload file
|
||||
```php
|
||||
require_once __DIR__ . 'vendor/autoload.php';
|
||||
```
|
||||
|
||||
### 4. Instantiate the installer class
|
||||
```php
|
||||
<?php
|
||||
|
||||
use Vendor\My_Plugin\My_Plugin_Installer;
|
||||
|
||||
My_Plugin_Installer::get_instance()->init();
|
||||
```
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
Covered in the [documentation](https://plugin-installer.wp.rs).
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome from everyone. We have [contributing guidelines](CONTRIBUTING.md) to help you get started.
|
||||
|
||||
## Credits and special thanks
|
||||
|
||||
This project is maintained by [Oblak Studio](https://oblak.studio).
|
||||
Special thanks goes to good people at [Automattic](https://automattic.com) for creating [WooCommerce](https://woocommerce.com) on whose installer this one is based upon, and [Action Scheduler](https://actionscheduler.org), which enables us to run update callbacks in the background.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the [GNU General Public License v2.0](LICENSE).
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue