WordPress Rest API devuelve un error

2 minutos de lectura

avatar de usuario
Schmidko

Estoy desarrollando un complemento para wordpress y tengo problemas con la API Rest. En mi servidor de prueba funciona sin problemas. (v4.6.6) En un servidor diferente (v4.4.10), la API devuelve este mensaje de error:

{"code":"rest_invalid_handler","message":"
Der Handler f\u00fcr die Route ist ung\u00fcltig","data":{"status":500}}%

El mensaje está en alemán y significa “El controlador de la ruta no es válido”. No entiendo por qué traducen los mensajes de error de una API. No tiene sentido para mí. 🙂

Las rutas en el http://dominio/wp-json son iguales. ¿Quizás un problema con las diferentes versiones de WP?

Definición de la ruta:

function __construct() {
    add_action( 'rest_api_init', function(){
        register_rest_route( 'test_namespace', 'ping', array(
            'methods' => 'POST',
            'callback' => array($this, 'ping_test'),
            'permission_callback' =>  array($this, 'myhacks_permission_callback'),
        ) );
    } );
}

Gracias por la ayuda.

  • ¿Puedes mostrarnos el resto del archivo? Creo que el problema proviene de $ este alcance es incorrecto.

    – Cañada

    3 de septiembre de 2017 a las 13:16


  • Creo que el problema está relacionado con la versión de PHP. Recibo este error en todos los servidores con < PHP 5.4. Eso está bien para mí. Actualicé la versión de PHP y ahora está funcionando.

    – Schmidko

    5 sep 2017 a las 12:40


  • $esto está bien, el mío viene de usar 'callback' => array($this => 'ping_test') en vez de 'callback' => array($this, 'ping_test')

    – Cañada

    6 de septiembre de 2017 a las 13:18

  • ¡El comentario de @Glen funcionó para mí!

    – Jorge Irún

    12 sep 2019 a las 17:47

Tuve el mismo problema. Parece que ese método ping_test no puede ser privado. Si lo cambias a público, el error desaparece.

  • Esta respuesta me ayudó con el mismo problema. Tengo la clase AjaxController registrada en FrontController. En el AjaxController registro rutas REST en su constructor con 'callback' => [$this,'portfolioSave',], propiedad de matriz args de register_rest_route. mi método fue protected y me ayudó cuando lo cambié a public. ¡Muchas gracias!

    – Marecky

    15 de febrero de 2018 a las 23:27

Echa un vistazo a la Núcleo de WordPress y puede ver que el método pasó como el callback alias ping_test debe ser exigible.

Entonces, este error se activa solo cuando ese método no existe (por ejemplo, lo encontré debido a un error tipográfico) o si no es accesible (como un método protegido o privado)

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad