allindata / wordpress-micro-core
此包已被废弃,不再维护。没有建议的替代包。
所有数据微插件的核心模块为Wordpress插件的现代开发提供了基本和可重用的功能。
1.5.3
2020-09-01 09:36 UTC
Requires
- bitexpert/disco: ^0.10
README
微Wordpress插件框架
所有数据微插件框架的核心模块为Wordpress插件的现代开发提供了基本和可重用的功能。
安装
要求
在您的Wordpress项目中创建一个新的插件文件夹,例如foobar-wp
。在文件夹内使用终端运行
composer require allindata/wordpress-micro-core
创建插件引导文件foobar-wp.php
,内容如下(最小化版本)
<?php
declare(strict_types=1);
/**
* Plugin Name: Foobar Wordpress
* Description: Foobar Wordpress
* Version: 1.0
* Author: All.In Data GmbH
* Author URI: https://www.all-in-data.de
* Text Domain: hfoobar-wp
* Domain Path: /languages
* License: GPL-2.0-or-later
* License URI: https://gnu.ac.cn/licenses/gpl-2.0.html
* WC requires at least: 5.0.0
* WC tested up to: 5.3.0
*/
defined('ABSPATH') or exit;
require __DIR__ . '/vendor/autoload.php';
class FoobarWp extends \AllInData\Micro\Core\Init
{
const PLUGIN_CONFIGURATION = \FoobarWp\PluginConfiguration::class;
const SLUG = 'foobar-wp';
const VERSION = '1.0';
const TEMPLATE_DIR = __DIR__ . '/view/';
const TEMP_DIR = ABSPATH . 'tmp/';
const FILE = __FILE__;
}
add_action('allindata/micro/core/init', [FoobarWp::class, 'init']);
插件配置(依赖注入)
插件框架支持Disco依赖注入容器,因此将在src文件夹中创建配置类PluginConfiguration.php
<?php
declare(strict_types=1);
namespace FoobarWp;
use AllInData\Micro\Core\Controller\PluginControllerInterface;
use AllInData\Micro\Core\Module\PluginModuleInterface;
use AllInData\Micro\Core\ShortCode\PluginShortCodeInterface;
use bitExpert\Disco\Annotations\Configuration;
use bitExpert\Disco\Annotations\Bean;
/**
* Class PluginConfiguration
* @package FoobarWp
* @Configuration
*/
class PluginConfiguration
{
/**
* @Bean
*/
public function PluginApp(): Plugin
{
return new Plugin(
\FoobarWp::load()->getTemplateDirectory(),
$this->getPluginModules(),
$this->getPluginControllers(),
$this->getPluginShortCodes()
);
}
/**
* @return PluginModuleInterface[]
*/
private function getPluginModules(): array
{
return [];
}
/**
* @return PluginControllerInterface[]
*/
private function getPluginControllers(): array
{
return [];
}
/**
* @return PluginShortCodeInterface[]
*/
private function getPluginShortCodes(): array
{
return [];
}
}
插件类(应用程序入口点)
<?php
declare(strict_types=1);
namespace FoobarWp;
use AllInData\Micro\Core\AbstractPlugin;
use AllInData\Micro\Core\PluginInterface;
class Plugin extends AbstractPlugin implements PluginInterface
{
public function load()
{
// some examples
add_action('wp_enqueue_scripts', [$this, 'addScripts'], 999);
add_action('admin_enqueue_scripts', [$this, 'addAdminScripts'], 999);
add_action('admin_enqueue_scripts', [$this, 'addAdminStyles'], 999);
}
public function addAdminStyles()
{
// ...
}
public function addScripts()
{
// ...
}
public function addAdminScripts()
{
// ...
}
}
这应该足以作为起点开始您的插件开发。
贡献
请自由地通过报告问题或创建一些改进的拉取请求来为此库做出贡献。
许可证
此库在GPL 2.0或更高版本许可证下发布。