我被困在尝试为自定义插件函数注册 REST 路由,以使该函数可由 javascript 调用。
示例显示了在 functions.php 中的注册脚本中嵌入的端点函数(例如在https://www.sitepoint.com/creating-custom-endpoints-for-the-wordpress-rest-api/)
但是,我的端点函数已经在自定义插件树的 PHP 文件中。
所以我试图:
为我的端点注册一个路由,例如:
www.example.com/test/v1/route_function_name
将其指向我的自定义函数名称,例如
name_of_function
告诉它在哪里可以找到该功能,例如
www.example.com/wp-content/plugins/custom-plugin-name/path-tree-stuff/public/plugin-functions-controller.php
我被困在第 3 位。问题是:
a) 我在哪里放置这个函数名参考?我不想从该文件中撕下我的功能代码并将其粘贴到路由注册代码中。
b) 我应该把函数文件的路径引用放在哪里?我遵循的示例仅引用了“数组,this”而不是实际路径,因此不要说明如何将路由注册到未封装在注册代码中的外部存储端点。
c) 我错过了什么吗?看起来从 JS 中屏蔽实际的函数 php 文件路径只会导致将其暴露在 WP 函数文件中吗?
https://developer.wordpress.org/rest-api/extending-the-rest-api/routes-and-endpoints/上的开发手册看起来像是它的示例试图通过自定义路由而不是自定义函数来挂钩 wordpress 功能.
有没有更适合我情况的例子?(我在自定义插件的自定义文件中有自定义函数,只需要注册一个 REST 路由并将其指向现有文件中的现有函数)。
到目前为止,我有以下显然不完整的内容:
add_action(
'rest_api_init',
function () {
register_rest_route(
'test/v1',
'/route_function_name',
[
'methods' => 'POST',
'callback' => function (WP_REST_Request $request) {
// Need to somehow insert here a path to my function
name_of_function;
// Reponse is sent back by the function, so need to trap it [
'return-param-1' => $return-param-1,
'return-param-2' => $return-param-2,
'return-param-3' => $return-param-3,
];
},
]
);
}
);
尝试这样做的理由是:
- 我已经运行了一个 JS 脚本
- 我需要它来调用我已经编写的 PHP 函数
- 这很简单:只需将函数的路径编码到 JS 中
- 但是,我正在尝试以正确的 WP 方式来代替(主要是出于安全原因,但也是为了安抚 DevProperly 的精神!)
我假设:
i) 注册REST路由的地方在活动子主题的functions.php中;
ii) 我的自定义函数的位置在我现有的自定义插件内的一个 php 文件中;
iii) 注册 rest 路由的代码需要至少指定以下三件事:
- 新 REST 路由的 URI
- 要调用的 php 函数的名称
- 可以在自定义插件路径中找到该 php 函数的文件和路径,相对于 /var/www
这些假设是否不正确?