在WordPress中使用WordPress Dispatcher创建一个自定义的路由链接URL。

Wordpress2年前 (2023)发布 SUYEONE
1.6K 0 0

WordPress中,遵循官方标准,通常我们需要利用admin_ajax钩子来注册Ajax操作,同时通过后台添加页面构建内容。然而,寻求更简便的方法,不依赖admin_ajax或直接在页面管理中创建页面,我们能借助WordPress Dispatcher php库来实现自定义页面和Ajax功能。下面是具体步骤:

首先,我们可以从其官方网站下载WordPress Dispatcher库,或者通过Composer这个PHP依赖管理工具来安装。对于Composer安装,只需在项目根目录运行以下命令:

“`bash
composer require fold/wordpress-dispatcher
“`

安装完成后,引入Composer生成的自动加载文件,以便使用该库:

“`php
require_once dirname(__FILE__) . ‘/../vendor/autoload.php’;
“`

接下来,我们利用WordPress Dispatcher创建自定义URL路径。例如,在一个在线充值功能中,我们可以定义一个”online_charge” URL,用于处理Ajax提交的数据,完成订单生成和支付跳转

“`php
use \TheFold\WordPress\Dispatch;

$dispatcher = new Dispatch([
‘online_charge’ => function ($request) {
$amount = trim($_POST[‘amount’]);
$tn = “p4_” . order_no(); // 生成唯一订单号
$total_fee = array_sum($amount); // 计算总金额

// 创建订单数据,根据需求自定义
$options = [
‘out_trade_no’ => $tn, // 生成的订单号
‘subject’ => ‘在线充值’, // 订单标题
‘total_fee’ => $total_fee, // 订单总金额
];

// 获取支付网关,此处省略具体实现
$gateway = get_gateway();
$response = $gateway->purchase($options)->send();

// 直接跳转到支付宝支付
$response->redirect();
},
]);
“`

此外,若需使用自定义模板展示内容,我们可以直接在Dispatcher中包含相应的模板文件,而不是编写回调函数。例如,创建一个显示订单的页面:

“`php
$dispatcher = new Dispatch([
‘orders/([a-z]*)’ => function ($request, $status = ‘all’) {
include(get_template_directory() . ‘/page-orders.php’);
},
]);
“`
在这个例子中,`page-orders.php`是自定义的模板文件,可以根据URL参数 `$status` 来显示不同状态的订单。

还可以将路由与类的方法关联,以提高代码的组织性和可维护性。例如,创建一个CheckoutController类来处理结账相关的操作:

“`php
class CheckoutController {
public function index() { /* … */ }
public function show(Request $request, $id) { /* … */ }
}

$dispatcher = new Dispatch([
‘checkout/’ => [new CheckoutController, ‘index’],
‘checkout/([a-z]+)’ => [new CheckoutController, ‘show’, [$request, $id]], // 其中 $request = ‘checkout/’, $id = ([a-z]+)
]);
“`

通过WordPress Dispatcher,我们无需注册额外的Ajax动作,简化了代码,使复杂项目中的Ajax处理和页面构建更为整洁高效。

© 版权声明

相关文章

暂无评论

暂无评论...
☺一键登录开启个人书签等功能!