wordpress-phoenix / abstract-plugin-base
PHP 类,用于在构建 WordPress 插件时扩展,让您遵循智能插件设置标准。
2.6.4
2020-03-05 16:42 UTC
Requires (Dev)
- automattic/vipwpcs: ^0.4.0
- dealerdirect/phpcodesniffer-composer-installer: ^0.5.0
- wp-coding-standards/wpcs: ^1.2.0
README
作为基类使用,帮助我们标准化构建 WordPress 插件的方式。
目录
安装
您可以使用这个库从头开始创建一个新的插件,或者使用这个库增强现有的插件。阅读完安装说明后,您应该知道该选择哪个方向。
Composer 风格(推荐)
- 使用
which composer
确认您的开发环境中已安装 composer。如果 CLI 没有打印任何路径,您需要 安装 Composer。 - 将 CLI 工作目录设置为 wp-content/plugins/{您的插件名称}
- 通过 composer 命令行安装 Abstract_Plugin 类,如下所示:
composer require wordpress-phoenix/abstract-plugin-base
- 请查看下面的示例代码,了解如何将此库包含到您的插件中。
手动安装
- 从
https://api.github.com/repos/WordPress-Phoenix/abstract-plugin-base/zipball
下载此存储库的最新副本 - 解压 zip 文件,并将 PHP 文件复制到您的插件项目中。
- 在您的插件中包含该文件。
使用
为什么在构建插件时要使用这个库呢?
通过使用面向对象原则构建插件,并扩展此 Plugin_Base 类对象,您将能够快速有效地构建插件,使其易于开始,但又能在不改变其架构的情况下扩展复杂功能。
即时功能包括
- 内置 SPL 自动加载,适用于您的包含文件夹,如果您遵循 WordPress codex 命名标准为类文件命名。
- 模板类为您提供标准插件初始化的最佳实践。
- 最小化主插件文件所需的代码和维护。
- 协助 WordPress 插件开发新手在文件/文件夹架构方面。
- 通过以相同的架构开始所有插件,我们为开发社区创建了一个更好的标准。
主插件文件和所需的插件类文件的简单示例
custom-my-plugin.php
:
<?php /** * Plugin Name: Custom My Plugin * Plugin URI: https://github.com/ */ // Avoid direct calls to this file, because now WP core and framework has been used if ( ! function_exists( 'add_filter' ) ) { header( 'Status: 403 Forbidden' ); header( 'HTTP/1.1 403 Forbidden' ); exit(); } // Create plugin instance on plugins_loaded action to maximize flexibility of wp hooks and filters system. include_once 'vendor/autoload.php'; include_once 'app/class-my-plugin.php'; Custom\My_Plugin\App::run( __FILE__ );
app/class-app.php
:
<?php namespace Custom\My_Plugin; use WPAZ_Plugin_Base\V_2_6\Abstract_Plugin; /** * Class App */ class App extends Abstract_Plugin { public static $autoload_class_prefix = __NAMESPACE__; protected static $current_file = __FILE__; public static $autoload_type = 'psr-4'; // Set to 2 when you use 2 namespaces in the main app file public static $autoload_ns_match_depth = 2; public function onload( $instance ) { // Nothing yet } public function init() { do_action( static::class . '_before_init' ); // Do plugin stuff usually looks something like // $subclass = new OptionalAppSubfolder\Custom_Class_Subclass(); // $subclass->custom_plugin_function(); do_action( static::class . '_after_init' ); } public function authenticated_init() { if ( ! is_user_logged_in() ) { return; } // Ready for wp-admin - but not required //$this->admin = new Admin\App( $this ); } protected function defines_and_globals() { // None yet. } }