philipnewcomer / wp-ajax-helper
一个用于简化WordPress插件和主题中AJAX请求的库。
Requires
- php: >=5.3
This package is auto-updated.
Last update: 2024-09-21 19:35:13 UTC
README
一个用于简化WordPress插件和主题中AJAX请求的库。
这是什么?
WP Ajax Helper库旨在简化WordPress中执行AJAX请求的过程。
它具有简单、易于理解的语法,自动处理nonce和验证,让您有更多精力关注更重要的事情。
它还会解析AJAX有效负载,将其作为数组或字符串(根据需要)传递给回调函数,同时解析回调的响应,并将其作为字符串或JSON返回给浏览器。
通过简单的验证组件,您可以轻松限制回调函数运行的用户权限。
最后,它提供了一个JavaScript前端组件,用于与后端库接口。
入门指南
后端
使用Composer将包包含到您的项目中,或者简单地从项目中的某个位置包含wp-ajax-helper.php。
最基本的使用方法是调用 wp_ajax_helper()
并传递一个处理程序和一个回调函数,如下所示
wp_ajax_helper()->handle( 'my-handle' )->with_callback( 'my_callback' );
处理程序是此实例的唯一标识符,回调函数是处理AJAX请求的函数。
前端
每当注册处理程序时,JavaScript函数 wpAjaxHelperRequest()
就可以在您的脚本中使用。传递您要调用的回调处理程序的处理程序,并将可选的有效负载作为第二个参数包含在内,该有效负载将被传递到您的回调函数中。
wpAjaxHelperRequest( 'my-handle', 'payload' );
有效负载可以是字符串或对象。如果发送对象,则将其转换为PHP数组传递到您的回调函数中。
您可能需要对AJAX请求的响应进行处理;下面将详细介绍。
高级使用
后端:回调
回调可以是函数名、类方法或闭包。
以下是一些说明如何注册回调的示例
wp_ajax_helper->handle( 'my-handle' )->with_callback( 'function_name' );
$args = array( // Some arguments here. );
wp_ajax_helper->handle( 'my-handle' )->with_callback( 'function_name', $args );
wp_ajax_helper->handle( 'my-handle' )->with_callback( array( $class, 'method_name' ) );
当回调函数执行时,将提供两个参数: $ajax_payload
和 $args
。第一个参数是请求中的AJAX有效负载。第二个是作为第二个参数(可选)指定的一组值的数组。
function my_ajax_callback( $ajax_payload, $args ) {
// Do something with the ajax payload.
do_something_with( $ajax_payload['my-value-1'] );
do_something_with( $ajax_payload['my-value-2'] );
// Return an array, which will be converted to JSON before being sent back to the browser.
return array(
'key1' => 'value1',
'key2' => 'value2',
);
}
如果回调函数返回字符串,则AJAX响应将是字符串。如果回调返回数组,则AJAX响应将是该数组,将其转换为JSON对象。如果回调函数返回任何其他内容,例如null、WP_Error对象或抛出异常,则响应将是错误。
后端:验证
为了指定在回调函数运行之前需要通过验证,请将验证数组传递给 with_validation()
方法,值以以下格式进行测试。
$validations = array(
'validation_name' => 'value to test'
);
wp_ajax_helper->handle( 'my-handle' )->with_validation( $validations );
以下验证可用
- logged_in(布尔值)
- user_can(能力名称)
- user_is(角色名称)
示例使用
$validations = array(
'logged_in' => true,
'user_can' => 'manage_options',
'user_is' => 'administrator',
);
wp_ajax_helper->handle( 'my-handle' )->with_validation( $validations );
所有验证都是可选的。
后端:过滤器
以下过滤器可用,允许您在将Ajax有效负载发送到回调函数之前对其进行过滤,以及在将回调函数的输出发送回浏览器之前对其进行过滤。
-
过滤器:
WP_Ajax_Helper\ajax_payload
参数: * $payload:Ajax有效负载。 * $handle:处理名称。 -
过滤器:
WP_Ajax_Helper\callback_response
参数: * $response:回调响应。 * $handle:处理名称。 * $callback_args:传递给回调函数的参数。 * $ajax_payload:传递给回调函数的Ajax有效负载。
前端:处理响应
函数 wpAjaxHelperRequest
将返回一个jQuery .POST请求来处理响应
wpAjaxHelperRequest( "my-handle", payload )
.success( function( response ) {
console.log( "Woohoo!" );
// 'response' will be the response from the handle's callback function, as either a string or JSON.
console.log( response );
})
.error( function( response ) {
console.log( "Uh, oh!" );
console.log( response.statusText );
});