wiryonolau/zend-wordpress

此包已被放弃且不再维护。未建议替代包。

基于 Zend 框架 3 的 WordPress 基础插件

v0.1.5 2019-10-27 12:43 UTC

This package is auto-updated.

Last update: 2020-08-27 14:34:20 UTC


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 导航菜单仅支持单级嵌套导航。