Cómo obtener los post del feed de Wordpress con c#

Hace unos días tuve que realizar un módulo en c#.NET para consumir el feed de un blog realizado con Wordpress. No es nada difícil pero creo que puede ser de utilidad explicar cómo lo hice.

Como el feed en wordpress se suele construir en XML busqué un plugin con el que pudiera obtener los datos en JSON, un formato que me gusta infinítamente más y que se manipula mucho mejor al ser básicamente un objeto javascript.

El plugin en cuestión se llama JSON Feed (https://jsonfeed.org/)  y es gratuito.

Una vez instalado y activado procedemos a trabajar nuestro módulo en c#.

Lo primero es crear un modelo para trabajar con cada post obtenido desde Wordpress.

public class BlogPostModelo

  {

          [JsonProperty("date_published")]
          public DateTime DateCreated { get; set; }

           [JsonProperty("title")]
           public string Title { get; set; }

           [JsonProperty("url")]
          public string Url { get; set; }

           [JsonProperty("image")]
          public string Image { get; set; }

   }


Para poder asignar a cada propiedad su equivalente en la respuesta JSON obtenida tenemos que hacer uso del espacio de nombres Newtonsoft.Json

Seguidamente creamos una función que nos permita obtener una lista de tipo BlogPostModelo con los post obtenidos.

En dicha función usamos la clase HttpClient y su método GetStringAsync, con el que podremos obtener los datos del blog.

A continuación te detallo el código necesario para implementar esta interesante funcionalidad.

private List ObtenerPosts()

       {

           string rss = “Url del RSS del blog en formato JSON”;
           var cliente = new HttpClient();
           var jsonData = cliente.GetStringAsync(rss).Result;
           JToken token = JObject.Parse(jsonData);

           var postMatriz = token.SelectToken("items");
           var sr = new JavaScriptSerializer();
           var posts = sr.Deserialize(postMatriz.ToString());

           return posts;
       }

Usamos el método Parse de la imprescindible clase JObject para parsear los elementos que componen el objeto JSON obtenido.

Seleccionamos el elemento base o padre del JSON para trabajar con la información que contenga sus hijos. En este caso seleccionamos el token “item” tal y como puedes ver en el código anterior.

Y usando el método Deserialize de la clase JavaScriptSerializer podremos obtener una lista con los post proporcionados por el feed del blog.

Para que la carga de la página que obtiene dichos post no se ralentice he usado jQuery y AJAX, de manera que mientras nuestra aplicación obtiene el feed y lo procesa la página carga de manera asíncrona. Una vez procesada la información los post se cargan en un div.

Fácil, rápido y sobre todo barato :)