mrbobbybryant/wp-api-endpoints

此包的最新版本(dev-master)没有可用的许可信息。

快速在WordPress中创建自定义端点

dev-master 2015-12-29 03:36 UTC

This package is not auto-updated.

Last update: 2024-09-18 19:07:12 UTC


README

此库由两个主要类组成。一个抽象类,可以用作在WordPress中设置AJAX端点的基类。它使用重写端点而不是admin-ajax请求。第二个类在基类之上提供API布局。这个类使得创建和删除端点变得容易。它还使得创建用于新创建端点的本地化数据变得容易。

这种方法的优点很多。

  1. 独特的URL,适合高流量的服务器缓存端点,如无限滚动。
  2. 允许将API端点组织到具有唯一端点的特定类中,以更好地组织代码。
  3. 由于可以直接在浏览器中请求URL,因此使API构建和测试更容易。

创建端点。

要开始,让我们看一个非常基本的例子。

use WP_API_ENDPOINTS\ENDPOINT_HANDLER as Handler;

function get_author_list() {
$authors = get_users('role=author');
wp_send_json_success( json_encode( $authors ) );
}

$ajax_handler = new Handler\Ajax_Handler();
$ajax_handler->add_admin_endpoint( 'get_author_list' );

在上面的例子中,我们已经创建了第一个端点。

  • 定义处理端点请求的回调函数。
  • 初始化端点API类。
  • 利用端点API类中的add_admin_endpoint()方法。

就是这样。现在如果您导航到您的网站.com/ajax/get_author_list,您将看到所有被分配作者角色的用户的JSON数据流。另一个需要注意的事情是,这个端点是管理端点,因此只有登录用户才能访问它。

本地化

大多数WordPress端点/AJAX过程的一个常见需求是本地化。在WordPress中,这是通过函数调用wp_localize_script()来处理的。

至少需要两件数据。

  • Ajax请求的端点URL。
  • 用于确认任何传入Ajax请求的安全性。

端点API类提供了创建这些本地化的有用接口。默认情况下,它将包括端点URL和NONCE。让我们看看一个例子。

use WP_API_ENDPOINTS\ENDPOINT_HANDLER as Handler;
$ajax_handler = new Handler\Ajax_Handler();

$ajax_handler->add_admin_localization(
	'my_admin_endpoint',
	'ajax_handler_js',
	'ajaxAdminHandler',
	$localized_data
);

API方法add_admin_localization接受以下参数

  • endpoint (string) required - 与此本地化数据相关的端点。
  • Javascript Handler (string) required - 就像wp_localized_script一样,我们需要将此数据关联到特定的javascript文件/处理程序。
  • Unique Handle (string) required - 这将用于标识本地化数据。在我们的例子中,此数据的唯一名称将是ajaxAdminHandle。一旦注册,如果您在浏览器控制台中输入此名称,您将看到数据列表。
  • Data (array) optional - 这是您想要通过此本地化传递的数据数组。下一个示例将更详细地展示这一点。此参数是可选的。默认情况下,它是一个空数组。

传递额外的数据

让我们看一个更有用的本地化数据示例。

$data = array(
    'siteURL'   => esc_url( site_url() ),
    'siteTitle' => esc_html( bloginfo( 'name' ) ),
    'myCustomQuery' => esc_html( my_custom_query() )
);

$ajax_handler = new Handler\Ajax_Handler();

$ajax_handler->add_admin_localization(
	'my_admin_endpoint',
	'ajax_handler_js',
	'ajaxAdminHandler',
	$data
);

这里你可以看到使用add_admin_endpoint的另一个示例。这次我实际上给出了一个使用本地化在WordPress中传递数据以供我们的javascript文件ajax_handler_js使用的示例。