在WordPress中,根据官方标准,如果我们需要使用Ajax,我们需要向admin_ajax注册Ajax动作。如果我们需要添加页面,我们可以直接在后台添加页面。有没有简单方便的方法,不用在页面管理办公室添加页面,或者不用admin_ajax实现Ajax操作,就可以实现自定义页面?答案自然是有的。
为了实现这个目标,我们需要WordPress Dispatcher PHP库的帮助。我们可以下载这个库,并把它包含在我们的主题或插件中,或者我们可以走捷径,通过Composer安装它。
通过Composer安装WordPress Dispatcher PHP库WordPress Dispatcher已经提交到Composer的官方列表中,我们可以通过Composer安装直接管理这个库。
Composer要求fold/wordpress-dispatcher通过Composer生成的自动加载文件自动加载wordpress-dispatcher类。安装Composer后,它会自动为我们创建一个包含所有安装包的自动加载文件。我们只需要导入这个文件就可以使用已安装的PHP库的所有功能。
//加载composer安装后所需的库_ once(dirname(_ _ file _ _)。’/../vendor/autoload . PHP ‘);使用 TheFold WordPress Dispatch使用WordPress Dispatcher创建WordPress Url以我最近开发的一个项目中的在线充值功能为例。在下面的代码中,online_charge是我们创建的在线充值的URL。我们通过Ajax将数据提交到/online_charge/URL,这个URL对应的函数就会自动执行。在本例中,操作是生成订单并跳转到支付宝支付。
//在线充值新派单([‘online _ charge’ = >函数($ request){ $ mount = trim($ _ post[‘ mount ‘]);$tn = “p4 “。order _ no();#计算总金额$ total _ fee = array _ sum($ mount);#计算总金额//创建订单数据,可由前台提交或自动生成$ options = [‘out _ trade _ no’ = > $ tn,//生成唯一订单号’ subject’ = > ‘在线充值’,//订单标题’ total_fee’ => $total_fee,//订单总金额。//获取支付网关$ gateway = Get _ gate _ way();$response = $gateway->购买($options )->发送();//直接跳转到支付宝支付$ response-> redirect();},] );使用自定义模板代替回调函数的具体函数有时候,我们需要使用自定义的页面模板来显示内容,这也是非常简单的。只需直接包含回调函数中要使用的模板。页面的具体内容在模板中定义,URL中的变量也可以直接在模板中使用。
new Dispatch([‘ orders/([a-z]*)’ = > function($ request,$ status = ” all)){ include(get _ template _ directory()。/page-orders . PHP ‘);},] );路由与类中的方法相对应,这样可以更好地组织路由和类。
new dispatch([‘ check out/’ = >[新结帐控制器,’ index’],’ check out/([a-z]+)’ = >[新结帐控制器,’ show ‘,[$ request,$ id]],//在以下参数中,$ request = checkout/。$ id =([a-z]+);]);通过WordPress Dispatcher,我们直接绕过了注册Ajax操作的动作,这无疑为我们节省了大量代码,在需要大量Ajax操作的主题或插件中,让我们的代码逻辑更加清晰。