Hola, si necesitamos obtener el idioma con el que se ha creado un POST en WordPress usando la API de WordPress tenemos que añadir un código extra, ya que por defecto no obtiene el idioma con el que se ha creado el POST.
En el caso de plugins como Polylang, almacena la información del idioma del post pero luego no lo muestra en el API de WordPress.
Para solucionarlo, tenemos que añadir este código.
- Ir a functions.php
- Añadir esta función:
function custom_rest_prepare_post($response, $post, $request) { // Obtener el idioma del post utilizando la consulta SQL global $wpdb; $language = $wpdb->get_var($wpdb->prepare(" SELECT wp_terms.slug FROM {$wpdb->posts} AS wp_posts JOIN {$wpdb->term_relationships} AS wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) JOIN {$wpdb->terms} AS wp_terms ON (wp_term_relationships.term_taxonomy_id = wp_terms.term_id) JOIN {$wpdb->term_taxonomy} AS wp_term_taxonomy ON (wp_terms.term_id = wp_term_taxonomy.term_id) WHERE wp_posts.ID = %d AND wp_term_taxonomy.taxonomy = 'language' ", $post->ID)); // Agregar el idioma al objeto de respuesta $response->data['language'] = $language; return $response; } add_filter('rest_prepare_post', 'custom_rest_prepare_post', 10, 3);
En este código, estamos utilizando el filtro rest_prepare_post
para interceptar la respuesta de la API de WordPress antes de que se envíe al cliente. Luego, ejecutamos la consulta SQL dentro de la función custom_rest_prepare_post
para obtener el idioma del post utilizando la clase $wpdb
, que proporciona una interfaz para interactuar con la base de datos de WordPress.
Finalmente, agregamos el idioma obtenido al objeto de respuesta utilizando la clave 'language'
.
Una vez que hayas agregado este código a tu archivo functions.php
o a tu plugin personalizado, al realizar una solicitud a la API de WordPress para obtener los posts, se incluirá el campo 'language'
en la respuesta junto con los demás datos del post.
Ahora, al realizar la solicitud a la API de WordPress nos devuelve lo siguiente:
"tags": [ 1528, 1012, 826, 1525, 1527, 819, 1538, 813, 1526, 1524, 1543, 1541 ], "language": "es",
Y como podemos observar, ahora sí que incluye el language.
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.