cba85 / wp-icarus-framework
Wordpress Icarus 插件框架模板
1.0.2
2021-04-26 15:41 UTC
Requires (Dev)
- phpunit/phpunit: ^8.3
This package is auto-updated.
Last update: 2024-09-26 23:50:27 UTC
README
Wordpress Icarus 插件框架。
安装
通过 Composer
$ composer require cba85/wp-icarus-framework
使用
引导
use Icarus\Plugin; require __DIR__ . '/../vendor/autoload.php'; new Plugin();
外观
您可以使用组件作为对象
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();
您还可以将一些组件用作外观
Hook::register('activation', __FILE__, function () { return new HookController; });
组件
配置
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
配置文件示例
return [ 'name' => 'WP Icarus plugin', 'view' => __DIR__ . '/../resources/views/', 'styles' => __DIR__ . '/../public/css/', 'scripts' => __DIR__ . '/../public/js/', ];
视图
您的视图文件名必须以.view.php结尾(例如filename.view.php);
use Icarus\View\View; $view = new View; $view->setPath(__DIR__ . '/views/'); $view->render('filename'); $view->render('filename', ['key' => 'value']); // With data
样式
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');
脚本
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::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::set('success', "Success test"); echo Session::has('success'); // True echo Session::get('success'); // Success test Session::remove('success'); Session::all(); Session::flush();
通知
外观
// Create a notice message Notice::setKey("icarus-framework")->create('success', "Success test"); // Display a notice message Notice::display();
钩子
外观
Hook::register('activation', __FILE__, function () { new ActivationHook; })->register('deactivation', __FILE__, function () { new DeactivationHook; });
管理
外观
Admin::action('process_test', function () { return $this->save(); });
模型
表
<?php namespace Icarus\Plugin\Models; use Icarus\Models\Tables\Table; class Post extends Table { public function table() { global $wpdb; return $wpdb->prefix . 'posts'; } public function key() { return 'ID'; } public function fields() { return []; } }
选项
<?php namespace Icarus\Plugin\Models; use Icarus\Models\Tables\Option; class WoocommerceOption extends Option { public function prefix() { return 'woocommerce_'; } public function fields() { return [ 'status', ]; } }
元数据
<?php namespace Icarus\Plugin\Models; use Icarus\Models\Tables\Meta; class ShippingMeta extends Meta { public function prefix() { return '_shipping_'; } public function fields() { return [ 'first_name', 'last_name', 'company', 'address_1', 'address_2', 'city', 'postcode', 'country', ]; } }
测试
$ ./vendor/bin/phpunit
或
$ composer run-script test