¿Cómo consumir una API externa en WordPress?

11 sept 2011, 20:02:33
Vistas: 36.2K
Votos: 10

Tengo un cliente que tiene un sitio web en WordPress y quiere extenderlo para añadir nuevas funcionalidades. Estas funcionalidades están incluidas en un sitio web que ya he desarrollado (una especie de motor de búsqueda sobre una base de datos, con algunos filtros), y que está bajo nuevas mejoras.

Lo que planeo hacer es crear una API JSON de mi sitio web (con todas las funciones de búsqueda sobre mi base de datos), y hacer que el sitio WordPress consuma esta API, entonces solo tendré que crear vistas para mostrar los resultados de búsqueda.

El problema es que no conozco WordPress en absoluto (para mí es algo donde puedes añadir artículos a través del panel de administración...) y no sé cómo podemos escribir nuestro propio código del lado del servidor en él. He buscado en Google y encontré algo llamado "plugin", pero me pregunto si es posible hacerlo, y si es la forma más simple ya que no necesito que el código sea utilizado por terceros. Si fuera posible modificar una instalación de WordPress para añadir mis archivos PHP, codificar lo que necesito (mis vistas con el mismo CSS de WordPress) sería más simple, pero no sé si es posible.

3
Comentarios

¿Qué es exactamente lo que estás intentando hacer, leer un feed JSON en WordPress, insertar datos en una base de datos, publicar mediante XML-RPC? Intenta ser más claro.

Wyck Wyck
11 sept 2011 20:08:40

Leer un feed JSON. Por ejemplo, el sitio de WordPress debería contener un formulario de búsqueda, al enviarlo, realizará una llamada GET a una API, la API devolverá objetos en JSON, y debería mostrar estos resultados en una página del sitio WordPress.

tahir tahir
11 sept 2011 20:22:56

@tahir Estoy intentando hacer esto mismo. ¿Serías capaz de compartir cómo lograste tu objetivo?

SAHM SAHM
3 abr 2014 06:24:11
Todas las respuestas a la pregunta 4
0
10

Una breve introducción al desarrollo en WordPress que podría ayudarte o confundirte:

Lo principal a tener en cuenta: todo es solo PHP. Y también: no edites los archivos núcleo de WordPress, porque tendrás problemas cuando actualices a una versión más nueva más adelante. El único código que deberías editar es el de los plugins y de los temas.

Si solo necesitas agregar algo a una página existente, podría funcionar simplemente editando el archivo correcto del tema. Sin embargo, si necesitas hacer algo avanzado (y agregar una "vista" extra, como en una URL específica, es más avanzado en WordPress), necesitas agregar el código en un lugar que se cargue antes en el proceso de arranque de WordPress.

La razón de esto es que WordPress siempre hace una consulta de publicaciones por ti, basada en la URL. Si vas a /category/banana/, consultará las publicaciones de la categoría banana y cargará el archivo de plantilla correcto donde solo tienes que iterar y mostrarlas. Sin embargo, si vas a /custom-view/, WordPress probablemente no encontrará ninguna publicación y cargará la plantilla 404, ¡sin darte una manera fácil de recuperarte!

Algunas personas resuelven esto creando "páginas falsas": crean una Página en WordPress donde el contenido no es importante, solo la plantilla es: allí hacen lo que sea que quieran hacer. Esto es un poco chapucero, pero funciona. La forma limpia sería definir reglas de reescritura adicionales, que le permitan a WordPress saber que /custom-view/ es una URL válida, pero que algo diferente debería suceder allí.

Si quieres hacer esto, necesitas engancharte al sistema núcleo de WordPress. La parte importante aquí es engancharte, no modificar. WordPress tiene acciones y filtros. Una acción es solo un anuncio ("Oye, estamos escribiendo la etiqueta <head>. ¿Quieres agregar algo también?"). Un filtro te permite modificar una variable ("Este es el título de la publicación. Si quieres modificarlo, devuelve un nuevo valor"). Por supuesto, el truco ahora es saber qué acciones y filtros deberías usar. Esto depende del camino que elijas (páginas falsas o nuevas reglas de reescritura), así que no entraré en detalles aquí.

Defines las acciones y filtros que quieres usar en un archivo de plugin o en el archivo functions.php de tu tema. Son especiales porque se cargan mientras WordPress está arrancando, así que antes de que se ejecute la consulta principal y demás. Un archivo de plugin es solo un archivo PHP, colocado en el directorio wp-content/plugins/, con un encabezado especial para que WordPress pueda leer su nombre y mostrarlo en el área de administración donde puedes activarlo o desactivarlo (así que puedes dejar el plugin en el directorio pero desactivarlo temporalmente).

11 sept 2011 21:26:19
0

Conceptos Básicos

Debes familiarizarte con los conceptos básicos de plugins y temas. En resumen: son adiciones a la funcionalidad principal de WordPress. Normalmente, los "Plugins" están más orientados a la funcionalidad, mientras que los "Temas" se centran más en la "vista". También podrías leer un poco sobre la "API de Plugins".

JSON

Puedes utilizar el script json2 integrado en el núcleo para proporcionar una API "segura".

Ejemplo de JSON

El resto sería algo como esto:

$response = json_encode( array( 
     'data' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;

XML RPC

El Codex también tiene información sobre "XML RPC".

API HTTP

Otra posibilidad podría ser las solicitudes HTTP. Asegúrate de leer las referencias al final del enlace.


Webhooks

Esto es adicional, ya que se trata más de proporcionar una API consumible. Explicación aquí. También existe un plugin llamado HookPress que hace este trabajo por ti. También hay algunas diapositivas del autor.

11 sept 2011 20:13:35
0

¿Supongo que conoces PHP? ¿O eso también es una barrera?

Básicamente, los plugins en WordPress son una convención sobre cómo empaquetar código PHP para que sea reconocido y manejado por el núcleo de WordPress. Es un formato, más que una funcionalidad.

En cuanto a la funcionalidad real, puedes ejecutar prácticamente cualquier código PHP arbitrario, pero es una buena práctica hacer uso de las APIs de WP por compatibilidad y fiabilidad.

Piensa en tu código en el contexto de WP como un include (que técnicamente será). A partir de ahí, es el alcance de tus necesidades y recursos lo que determinará cuánto de él se reescribirá para ser específico de WordPress.

11 sept 2011 21:19:42
0

Sí, es posible.

La mayoría de los plugins se crean a través de lo que se conoce como hooks (ganchos):

Por ejemplo:

add_action("hook", "function")

Es bastante fácil construir tu propio plugin una vez que entiendes cómo funciona ese framework... Te recomendaría familiarizarte con él. El lugar más extenso para obtener conocimiento (aunque no el más organizado - como php.net) es el codex de WordPress.

12 sept 2011 03:22:36