https://github.com/cba85/wp-icarus-framework
Modern framework that helps you quickly write simple yet powerful Wordpress plugin
https://github.com/cba85/wp-icarus-framework
wordpress wordpress-development wordpress-php-library wordpress-plugin
Last synced: about 2 months ago
JSON representation
Modern framework that helps you quickly write simple yet powerful Wordpress plugin
- Host: GitHub
- URL: https://github.com/cba85/wp-icarus-framework
- Owner: cba85
- Created: 2019-09-22T19:26:06.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-04-26T15:42:25.000Z (about 5 years ago)
- Last Synced: 2025-09-15T01:49:07.396Z (9 months ago)
- Topics: wordpress, wordpress-development, wordpress-php-library, wordpress-plugin
- Language: PHP
- Size: 86.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WP Icarus framework
Wordpress Icarus plugin framework.
## Install
Via Composer
```
$ composer require cba85/wp-icarus-framework
```
## Usage
### Bootstrap
```php
use Icarus\Plugin;
require __DIR__ . '/../vendor/autoload.php';
new Plugin();
```
### Facades
You can use components as objects:
```php
use Icarus\Assets\Script;
$script = new Script(__DIR__ . '/js');
$script->add('style1-name', 'style.css', [], false, 'all')
->add('style2-name', 'style2.css', [], false, 'all')
->save();
```
You can also use some components as facades:
```php
Hook::register('activation', __FILE__, function () {
return new HookController;
});
```
## Components
### Config
```php
use Icarus\Config\Config;
$config = new Config;
// Bind a configuration file
$config->bind(['test' => require __DIR__ . '/config/test.php']);
// Get a key from a configuration file
$config->get('test')['key']; // Value
```
Config file example:
```php
return [
'name' => 'WP Icarus plugin',
'view' => __DIR__ . '/../resources/views/',
'styles' => __DIR__ . '/../public/css/',
'scripts' => __DIR__ . '/../public/js/',
];
```
### View
Your view files name must end with `.view.php` (e.g. `filename.view.php`);
```php
use Icarus\View\View;
$view = new View;
$view->setPath(__DIR__ . '/views/');
$view->render('filename');
$view->render('filename', ['key' => 'value']); // With data
```
### Style
```php
use Icarus\Assets\Style;
(new Style)->setPath(Config::get('plugin')['styles'])
->add('style1-name', 'style.css', [], false, 'all')
->add('style2-name', 'style2.css', [], false, 'all')
->save('wp_enqueue_style');
```
### Script
```php
use Icarus\Assets\Script;
(new Script)->setPath(Config::get('plugin')['scripts'])
->add('scripts', 'scripts.js', [], false, true)
->add('admin', 'admin.js', [], false, true)
->save('wp_enqueue_script');
```
### Menu
#### Facade
```php
Menu::create(function () {
Menu::addPage('page', 'menu', 'capability', 'slug', function () {
return (new \Icarus\Tests\Mocks\AdminController)->index();
});
Menu::addSubPage('parent', 'page', 'menu', 'capability', 'slug', function () {
return (new \Icarus\Tests\Mocks\AdminController)->index();
});
});
```
### Session
#### Facade
```php
Session::set('success', "Success test");
echo Session::has('success'); // True
echo Session::get('success'); // Success test
Session::remove('success');
Session::all();
Session::flush();
```
### Notice
#### Facade
```php
// Create a notice message
Notice::setKey("icarus-framework")->create('success', "Success test");
// Display a notice message
Notice::display();
```
### Hook
#### Facade
```php
Hook::register('activation', __FILE__, function () {
new ActivationHook;
})->register('deactivation', __FILE__, function () {
new DeactivationHook;
});
```
### Admin
#### Facade
```php
Admin::action('process_test', function () {
return $this->save();
});
```
## Models
### Table
```php
prefix . 'posts';
}
public function key()
{
return 'ID';
}
public function fields()
{
return [];
}
}
```
### Option
```php