Как вызвать метод класса в качестве функции обратного вызова в пользовательской конечной точке WordPress? - PullRequest
1 голос
/ 17 апреля 2019

У меня есть пользовательская конечная точка, которая выглядит следующим образом:

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?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Если ловушка вызывается внутри класса 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')
    ));
});

Если это решение неработая, немного больше деталей вашей проблемы поможет в определении.

0 голосов
/ 17 апреля 2019

Методы класса в WordPress Hooks должны быть установлены через двумерный массив.

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