Problem with custom end point that worked ok before updating wordpress
-
Hello and thanks in advance.
I wrote a plugin to create a custom end point and get info from the wordpress page in JSON format.
Everything worked ok until the upgrade to wordpress 6.1.1
This is the code of the plugin:
<?php /** * Plugin name: Benedictus API * Plugin URL: https://benedictus.clickapps.org * Description: Un plugin hecho por mí para gestionar la conexión con la app. * Version: 0.99 * Author: José Ramón Rubio Moldenhauer */ // Ejemplo para pedir títulos de ángelus y en francés -> https://benedictus.clickapps.org/wp-json/beneapi/v1/alldocuments?idioma=fr&tipo_doc=angelus function get_AllDocuments($params) { // Estos son los parámetros que ponemos en la url con las marcas "?". $idioma = $params->get_param('idioma'); $tipo_doc = $params->get_param('tipo_doc'); $args = [ 'posts_per_page' => -1, 'post_type' => $tipo_doc, 'orderby' => 'post_date', 'order' => 'ASC' ]; $posts = new WP_Query($args); $data = []; $i = 0; foreach($posts->posts as $post) { $data[$i]['id'] = $post->ID; $data[$i]['fecha_post'] = $post->post_date; $data[$i]['fecha_doc'] = get_field('fecha_doc', $post->ID); switch ($idioma) { case 'en': echo $data[$i]['titulo_EN'] = get_field('titulo_EN', $post->ID); break; case 'es': echo $data[$i]['titulo_ES'] = get_field('titulo_ES', $post->ID); break; case 'it': echo $data[$i]['titulo_IT'] = get_field('titulo_IT', $post->ID); break; case 'de': echo $data[$i]['titulo_DE'] = get_field('titulo_DE', $post->ID); break; case 'fr': echo $data[$i]['titulo_FR'] = get_field('titulo_FR', $post->ID); break; } $i++; } return $data; } // Ejemplo de petición de documentos filtrados por taxonomía: https://benedictus.clickapps.org/wp-json/beneapi/v1/documentsfiltered?idioma=fr&tipo_doc=angelus&taxonomy=pred_ciclo&taxonomy_terms[]=a&taxonomy_terms[]=b function get_DocumentsFiltered($params) { // Estos son los parámetros que ponemos en la url con las marcas "?". $idioma = $params->get_param('idioma'); $tipo_doc = $params->get_param('tipo_doc'); $taxonomy = $params->get_param('taxonomy'); $taxonomy_terms = $params -> get_param('taxonomy_terms'); $args = [ 'posts_per_page' => -1, 'post_type' => $tipo_doc, 'orderby' => 'post_date', 'order' => 'ASC', 'tax_query' => array( array( 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $taxonomy_terms, 'operator' => 'IN' ) ) ]; $posts = new WP_Query($args); $data = []; $i = 0; foreach($posts->posts as $post) { $data[$i]['id'] = $post->ID; $data[$i]['fecha_post'] = $post->post_date; $data[$i]['fecha_doc'] = get_field('fecha_doc', $post->ID); switch ($idioma) { case 'en': echo $data[$i]['titulo_EN'] = get_field('titulo_EN', $post->ID); break; case 'es': echo $data[$i]['titulo_ES'] = get_field('titulo_ES', $post->ID); break; case 'it': echo $data[$i]['titulo_IT'] = get_field('titulo_IT', $post->ID); break; case 'de': echo $data[$i]['titulo_DE'] = get_field('titulo_DE', $post->ID); break; case 'fr': echo $data[$i]['titulo_FR'] = get_field('titulo_FR', $post->ID); break; } $i++; } return $data; } function get_Document($params) { // Estos son los parámetros que ponemos en la url con las marcas "?". $id = $params -> get_param('id'); $idioma = $params -> get_param('idioma'); $post = get_post($id); $data = []; $data['id'] = $post->ID; $data['fecha_post'] = $post->post_date; $data['fecha_doc'] = get_field('fecha_doc', $post->ID); switch ($idioma) { case 'en': echo $data['titulo_EN'] = get_field('titulo_EN', $post->ID); break; case 'es': echo $data['titulo_ES'] = get_field('titulo_ES', $post->ID); break; case 'it': echo $data['titulo_IT'] = get_field('titulo_IT', $post->ID); break; case 'de': echo $data['titulo_DE'] = get_field('titulo_DE', $post->ID); break; case 'fr': echo $data['titulo_FR'] = get_field('titulo_FR', $post->ID); break; } return $data; } add_action('rest_api_init', function(){ register_rest_route('beneapi/v1', 'alldocuments', [ 'methods' => 'GET', 'callback' => 'get_AllDocuments', ]); register_rest_route('beneapi/v1', 'documentsfiltered', [ 'methods' => 'GET', 'callback' => 'get_DocumentsFiltered', ]); register_rest_route('beneapi/v1', 'document', [ 'methods' => 'GET', 'callback' => 'get_Document', ]); });
And when I try to use the link:
https://benedictus.clickapps.org/wp-json/beneapi/v1/alldocuments?idioma=fr&tipo_doc=angelusI should get in JSON the “id”, “fecha_post”, “fecha_doc” and “titulo”. However I get the list of all “titulo” not in JSON format, and afterwards, the JSON response.
It worked ok before… but I don’t know what I am doing wrong.
Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
- The topic ‘Problem with custom end point that worked ok before updating wordpress’ is closed to new replies.