我有一个自定义端点,如下所示:
add_action( 'rest_api_init', function () {
register_rest_route( 't2mchat/v2', '/get_curr_user_lang', array(
'methods' => 'GET',
'callback' => 'get_user_lang'
));
});
当它不是基于类的方法时,我能够调用回调函数“ get_user_lang”。但是,一旦将其转换为基于类的方法,便无法调用它。
我的课看起来像这样:
<?php
namespace T2mchat\TokenHandler;
class TokenHandler {
function get_user_lang() {
return "client_langs";
}
}
?>
我的新端点如下:
$t2m = new T2mchat\TokenHandler\TokenHandler();
add_action( 'rest_api_init', function () {
register_rest_route( 't2mchat/v2', '/get_curr_user_lang', array(
'methods' => 'GET',
'callback' => array($t2m, 'get_user_lang')
));
});
有人对如何在WordPress Rest API自定义终结点中调用基于类的方法有任何想法吗?
答案 0 :(得分:1)
如果在类if-self中调用了该钩子,并在其中定义了yout回调方法:
add_action( 'rest_api_init', function () {
register_rest_route( 't2mchat/v2', '/get_curr_user_lang', array(
'methods' => 'GET',
'callback' => array($this,'get_user_lang')
));
});
如果来自其他班级:
add_action( 'rest_api_init', function () {
register_rest_route( 't2mchat/v2', '/get_curr_user_lang', array(
'methods' => 'GET',
'callback' => array('className','get_user_lang')
));
});
如果此解决方案不起作用,则有关问题的更多详细信息将有助于进行定义。
答案 1 :(得分:1)
如果您使用的是同一类的静态方法,则array()解决方案将不起作用。我必须使用“魔术”常量__CLASS__
:
'callback' => __CLASS__ . '::get_posts',
要使用此自定义类和另一个静态方法作为回调添加操作,我必须使用此表示法:
require_once( get_template_directory() . "/inc/classes/Rest/Posts.php" );
add_action( 'rest_api_init', 'Custom\Namespace\Posts::register_routes');
答案 2 :(得分:0)
WordPress挂钩中的类方法应通过二维数组设置。
add_action( 'rest_api_init', function () {
register_rest_route( 't2mchat/v2', '/get_curr_user_lang', array(
'methods' => 'GET',
'callback' => array($class_object,'get_user_lang')
));
});