yahnis-elsts/ajax-wrapper

WordPress 的 AJAX 操作包装器

dev-master 2024-01-11 14:53 UTC

This package is auto-updated.

Last update: 2024-09-11 16:32:31 UTC


README

此助手库使在 WordPress 插件中处理 AJAX 请求变得更容易。主要用于个人使用。

示例

定义操作

$exampleAction = ajaw_v1_CreateAction('ws_do_something')
	->handler(array($this, 'myAjaxCallback'))
	->requiredCap('manage_options')
	->method('post')
	->requiredParam('foo')
	->optionalParam('bar', 'default value')
	->register();

从 JavaScript 中调用

AjawV1.getAction('ws_do_something').post(
	{
		'foo': '...'
	},
	function(response) {
		console.log(response);
	}
);

特性

  • 自动化常见且无聊的事情。
    • 自动传递 admin-ajax.php URL 和 nonce 到 JS。
    • 定义必需参数。
       $builder->requiredParam('foo', 'int')
    • 定义具有默认值的可选参数。
       $builder->optionalParam('meaningOfLife', 42, 'int')
    • 自动移除 WordPress 添加到 $_GET$_POST$_REQUEST 中的“魔法引号”。
    • 将返回值编码为 JSON。
  • 安全性应该是默认的。
    • 生成并验证 nonce。nonce 验证默认开启,但可以禁用。
       $builder->withoutNonce()
    • 检查能力。
       $builder->requiredCap('manage_options');
    • 验证所有必需参数是否已设置。
    • 验证参数值。
       $builder->optionalParam('things', 1, 'int', function($value) {
       	if ($value > 10) {
       		return new WP_Error(
       			'excessive_things',
       			'Too many things!',
       			400 //HTTP status code.
       		);
       	}
       })
    • 设置所需的 HTTP 方法。
       $builder->method('post')
  • 弹性。
    • 宽松的响应解析,以解决其他插件中的错误。例如,处理 AJAX 响应中的额外空格和 PHP 通知。
    • 同一网站上可以存在该库的多个版本。

为什么不使用 REST API 呢?

向后兼容性。理论上,此库应与 WP 4.1+ 兼容。