chameleon2die4/wp-router

将路径路由到WordPress中的回调函数。

安装: 81

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 0

分支: 27

类型:

1.0 2022-02-13 23:01 UTC

This package is auto-updated.

Last update: 2024-09-14 04:23:51 UTC


README

PHP Composer Latest Version Packagist PHP Version Require License

提供一个简单的API,用于将请求映射到回调函数。

描述

WordPress的重写规则和查询变量提供了一种强大的系统,用于将URL字符串映射到一系列帖子。每个请求都被解析为查询变量,并通过 $wp_query->query() 转换为SQL查询。

有时,你可能不想显示帖子列表。你只是想将一个URL映射到回调函数,并在你正在使用的主题中替换帖子内容。

这就是WP Router的作用。它处理注册帖子类型、查询变量、重写规则等繁琐的工作,并允许你编写代码来实现你想要的功能。只需一个函数调用,就可以将URL映射到指定的回调函数,并在页面上显示返回值。

安装

Composer

浏览到目录并运行;

$ composer require chameleon2die4/wp-router

要求

卸载

删除包后,使用 flush_rewrite_rules() 函数。

用法

创建路由

  • 你的插件应该挂钩到 wp_router_generate_routes 动作。回调函数应接受一个参数,即一个 WP_Router 对象。
  • 使用 WP_Router::add_route( $id, $args ) 注册路由及其回调
    • $id 是插件应使用的唯一字符串,用于识别路由
    • $args 是一个关联数组,用于设置以下属性。任何省略的参数将使用默认值。
      • path(必需)- 一个正则表达式,用于与请求路径匹配。这对应于创建WordPress重写规则时使用的数组键。

      • query_vars - 一个关联数组,其键为查询变量,值为路径正则表达式中对应的明确字符串或整数。任何包含在此处的查询变量将自动注册。

      • title - 页面标题。

      • title_callback - 用于动态生成标题的回调函数。默认为 __()。如果为 NULL,则直接使用 title 参数。如果 page_callbackaccess_callback 返回 FALSE,则不会调用 title_callback

        title_callback 可以是单个回调函数或一个数组,指定特定HTTP方法(例如 GETPOSTPUTDELETE 等)的回调函数。如果是后者,如果当前请求方法没有匹配的键,则使用 default 键。

      • title_arguments - 一个查询变量的数组,其值将作为参数传递给 title_callback。默认为 title 的值。如果参数不是已注册的查询变量,则按原样传递。

      • page_callback(必需)- 用于动态生成页面内容的回调函数。回调函数应输出或返回页面内容(如果两者都提供,则返回值将附加到输出值)。如果返回 FALSE,则不输出任何内容,并将页面内容的控制权交回WordPress。回调函数将在WordPress页面加载的 parse_request 阶段被调用。如果 access_callback 返回 FALSE,则不会调用 page_callback

        page_callback 可以是一个单一的回调函数,也可以是一个数组,指定特定 HTTP 方法(例如 GETPOSTPUTDELETE 等)的回调函数。如果是后者,如果没有其他键与当前请求方法匹配,将使用 default 键。

      • page_arguments - 一个查询变量的数组,其值将作为参数传递给 page_callback。如果参数不是已注册的查询变量,则将按原样传递。

      • access_callback - 一个回调,用于确定用户是否有权访问此页面。如果提供了 access_arguments,则默认为 current_user_can,否则默认为 TRUE。如果回调返回 FALSE,则匿名用户将被重定向到登录页面,已认证用户将收到 403 错误。

        access_callback 可以是一个单一的回调函数,也可以是一个数组,指定特定 HTTP 方法(例如 GETPOSTPUTDELETE 等)的回调函数。如果是后者,如果没有其他键与当前请求方法匹配,将使用 default 键。

      • access_arguments - 一个查询变量的数组,其值将作为参数传递给 access_callback。如果参数不是已注册的查询变量,则将按原样传递。

      • template - 可以用于显示页面的模板数组。如果路径是绝对路径,则将按原样使用;相对路径允许主题进行覆盖。字符串 $id 将被替换为路由的 ID。如果没有找到模板,将按以下顺序使用后备模板:route-$id.phproute.phppage-$id.phppage.phpindex.php。如果给出 FALSE 而不是数组,则在调用 exit() 之前将打印页面内容(您也可以通过直接从回调函数中打印输出并退出来实现这一点)。

示例

$router->add_route('wp-router-sample', array(
    'path' => '^wp_router/(.*?)$',
    'query_vars' => array(
        'sample_argument' => 1,
    ),
    'page_callback' => array(get_class(), 'sample_callback'),
    'page_arguments' => array('sample_argument'),
    'access_callback' => TRUE,
    'title' => 'WP Router Sample Page',
    'template' => array('sample-page.php', dirname(__FILE__).DIRECTORY_SEPARATOR.'sample-page.php')
));

在这个示例中,路径 http://example.com/wp_router/my_sample_path/ 将调用调用类中的 sample_callback 函数。在这种情况下,sample_argument 查询变量的值 "my_sample_path" 将作为第一个也是唯一的参数传递给回调函数。如果主题中找到了 sample-page.php 文件,则将其用作模板;否则,将使用插件目录中的 sample-page.php(如果也找不到,则回退到 route-wp-router-sample.php 等)。

编辑路由

您可以通过钩入 wp_router_alter_routes 动作来修改其他插件创建的路由。回调应接受一个参数,即一个 WP_Router 对象。

公共 API 函数

创建或更改路由始终应在 wp_router_generate_routeswp_router_alter_routes 动作的情况下进行,使用传递给您的回调函数的 WP_Router 对象。

  • WP_Router::edit_route( string $id, array $changes ) - 更新 $changes 中给出的每个属性,以匹配给定 ID 的路由。未在 $changes 中给出的任何属性都将保持不变。
  • WP_Router::remove_route( string $id ) - 删除具有给定 ID 的路由
  • WP_Router::get_route( string $id ) - 获取给定 ID 的 WP_Route 对象
  • WP_Router::get_url( string $id, array $arguments ) - 获取访问具有给定 ID 的路由的 URL,带有给定的查询变量及其值
  • WP_Route::get( string $property ) - 获取 WP_Route 实例的指定属性的值