如果您想在 JS 文件中获取国家/地区,有两种方法可以不使用官方 WC API 来处理。
方案一(JS方案):
首先,您需要以某种方式将国家/地区传递给您的 JS 文件。您可以使用 WordPress 的本地化功能来做到这一点。为此,请转到添加脚本的文件。您通常使用此函数执行此操作:
wp_register_script( 'my-script', 'path/to/my-script.js' );
wp_enqueue_script( 'my-script' );
现在您可以使用本地化功能来查找脚本并传递您的国家/地区:
$countries = new WC_Countries();
wp_localize_script( 'my-script', 'my_script', [
'countries' => $countries->get_allowed_countries()
]);
在您的 JS 中,您现在可以使用 console.log( my_script.countries ) 访问这些数据。
解决方案 2(自有端点解决方案):
使用解决方案 2,您可以在 WordPress 中创建自己的端点。如果我是你,我会先在这里阅读这些内容:
https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
有了这些知识,您现在就可以创建自己的端点了。我不想描述所有内容,因为它很多,我认为你可以做到!
有3个部分需要处理:
- 自定义端点注册
- 身份验证
- 回调
首先您需要注册一个如下所示的自定义端点并创建一个回调函数:
register_rest_route( 'user8463989/v1', 'countries', [
[
'methods' => WP_REST_Server::READABLE,
'callback' => 'get_allowed_countries',
'permission_callback' => '', // <- you can do a permission check here like if the user is allowed and has correct caps
]
]
);
function get_allowed_countries(): WP_REST_Response {
$countries = new WC_Countries();
return new WP_REST_Response( [
'data' => $countries->get_allowed_countries()
], 200 );
}
现在您可以通过调用此 URL 来使用基本的 JS http 请求来调用您的端点:
https://your-page.com/user8463989/v1/countries
如果一切正确且身份验证有效,您将获得国家/地区列表。
解决方案 1 已经过测试并且可以正常工作 - 解决方案 2 也需要您进行一些工作,因为需要进行身份验证(如果您需要一些)。否则,每个人都可以访问您允许的国家/地区。如果这对你来说没问题,那就去吧。