philipnewcomer/wp-ajax-helper

一个用于简化WordPress插件和主题中AJAX请求的库。

1.0.1 2017-06-25 22:19 UTC

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 );
    });