wiryonolau / zend-wordpress
此包已被放弃且不再维护。未建议替代包。
基于 Zend 框架 3 的 WordPress 基础插件
v0.1.5
2019-10-27 12:43 UTC
Requires
- php: ^7.2
- zendframework/zend-debug: ^2.6
- zendframework/zend-mvc: ^3.1
- zendframework/zend-navigation: ^2.9
- zendframework/zend-session: ^2.9
README
用于创建 WordPress 插件的 Zend 框架 3 MVC 应用程序库,从 zendmaniacs/zf-to-wp 分支而来,通过 composer 提供使用
安装
使用 Composer
composer require wiryonolau/zend-wordpress
使用方法
your-plugin-file.php
<?php require_once plugin_dir_path(__FILE__). '/vendor/autoload.php'; $zendWordpress = new ZendWordpress\Application(); $zendWordpress->setPluginDirectory(plugin_dir_path(__FILE__)) ->setPluginFile(__FILE__) ->setRoutePrefix("my_plugin_prefix") ->setTablePrefix("my_db_prefix") ->enableSession() ->run(); ?>
config/application.config.php
已包含模块 Zend\Navigation、Zend\Router、Zend\Session
<?php return [ "modules" => [ "ZendWordpress" ] ]; ?>
config/router.config.php
<?php return [ "router" => [ "routes" => [ "plugin_admin_page" => [ "type" => "WpAdminRoute", "options" => [ "route" => "/plugin_admin_page_without_route_prefix" "defaults" => [ "controller" => "Your controller" "action" => "action" ] ] ] ] ] ] ?>
在视图中使用 UrlHelper
由于所有在管理区域中的 URL 都在组装路由时转换为查询 "admin.php?page=",在 url helper 中传递 "query" 选项会由于 TreeRouteStack 在组装路由后注入查询选项而导致 URL 出错。您必须将所有内容作为参数传递,然后 WpAdminRoute 将将其转换为查询。
如果需要,您可以定义自己的 TreeRouteStack 并将其传递给 array("router" => array("router_class" => ""))
<?php # Do this $this->url( "your page without namespace", array( "param1" => "your parameter" "param1" => "your parameter and so on" ) ); # Instead of this $this->url( "your page without namespace", array(), array( "query" => array( "param1" => "your parameter" "param1" => "your parameter and so on" ) ) ); ?>
限制
- 目前 wpAdminRoute 不支持 child_routes。如果您添加 child_routes,则会抛出异常。
- WordPress 导航菜单仅支持单级嵌套导航。