¿Consumir una API externa en WordPress?

9

Tengo un cliente que tiene un sitio web de WordPress, y él quiere extenderlo para agregar nuevas funcionalidades. Estas funcionalidades están incluidas en un sitio web que ya hice (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 en mi base de datos) y hacer que el sitio web de WordPress consuma esta API, luego 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 agregar 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. Busqué en Google y encontré algo llamado "plugin", pero me pregunto si es posible hacerlo, y si es la forma más sencilla de hacerlo, ya que no necesito que otro tercero use el código. fiesta. Si es posible hackear una instalación de WordPress para agregar 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.

tahir
fuente
¿Qué es exactamente lo que está tratando de hacer? Leer un feed json en WordPress, insertar datos en una base de datos, publicar a través de XML-RPC, intentar ser más claro.
Wyck
leer json feed. por ejemplo, el sitio de wordpress debe contener un formulario de búsqueda, al enviarlo, realizará una llamada a una api, la api devolverá objetos en json, y debería mostrar estos resultados en una página del sitio de wordpress
tahir
1
@tahir Estoy tratando de hacer esto mismo. ¿Sería posible compartir cómo logró su objetivo?
SAHM

Respuestas:

9

Una breve introducción al desarrollo de WordPress que podría ayudarlo o confundirlo:

Lo principal a tener en cuenta: todo es solo PHP. Y también: no edite los archivos principales de WordPress, porque tendrá problemas cuando actualice a una versión más reciente más tarde. El único código que debe editar es el de los complementos y los temas.

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

La razón de esto es que WordPress siempre realiza una consulta posterior para usted, en función de la URL. Cuando vaya /category/banana/, buscará publicaciones de categoría bananay cargará el archivo de plantilla correcto donde solo tendrá que recorrerlo y mostrarlo. Sin embargo, si va a /custom-view/, WordPress probablemente no encontrará ninguna publicación y cargará la plantilla 404, ¡lo que no le brinda una forma fácil de recuperarse!

Algunas personas resuelven esto creando "páginas de código auxiliar": crean una página en WordPress donde el contenido no es importante, solo la plantilla lo es: allí hacen lo que quieran. Esto es hack, pero funciona. La manera 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 más debería suceder allí.

Si desea hacer esto, debe conectarse al sistema central de WordPress. La parte importante aquí es enganchar , no modificar . WordPress tiene acciones y filtros . Una acción es solo un anuncio ( "Oye, actualmente estamos escribiendo la <head>etiqueta. ¿Quieres agregar algo también?" ). Un filtro le permite modificar una variable ( "Este es el título de la publicación. Si desea modificarlo, devuelva un nuevo valor" ). Por supuesto, el truco ahora es saber qué acciones y filtros debe usar. Esto depende de la forma que elija (páginas de código auxiliar o nuevas reglas de reescritura), por lo que no entraré en detalles aquí.

Defina las acciones y los filtros que desea usar en un archivo de complemento o en el archivo functions.php de su tema. Son especiales porque se cargan mientras WordPress se inicia , así que antes de ejecutar la consulta principal, etc. Un archivo de complemento es solo un archivo PHP, colocado en el wp-content/plugins/directorio, con un encabezado especial para que WordPress pueda leer su nombre y mostrarlo en el área de administración donde puede habilitarlo y deshabilitarlo (para que pueda dejar el complemento en el directorio pero temporalmente deshabilitarlo).

Jan Fabry
fuente
2

Lo esencial

Debe conocer los conceptos básicos de complementos y temas. En resumen: son adiciones a la funcionalidad principal de WordPress. Normalmente, los "complementos" tienen más que ver con la funcionalidad y los "temas" tienen más que ver con la "vista". También es posible que desee leer un poco sobre la "API de complementos" .

JSON

Es posible que desee utilizar el script json2 integrado en el núcleo para proporcionar una API "segura".

Ejemplo 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 algo sobre el "XML Rpc" .

API HTTP

Otra posibilidad podrían ser las solicitudes http . Asegúrese de leer las referencias en la parte inferior del enlace.


Webhooks

Esto es adicional, ya que se trata más de dar una API consumible. Explicación aquí . Y también hay un complemento llamado HookPress que hace este trabajo por usted. Algunas diapositivas del autor también.

emperador
fuente
1

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

Esencialmente, los complementos en WordPress son convenciones de cómo empaquetar código PHP para que sea reconocido y manejado por el núcleo de WordPress. Es formato, más que funcionalidad.

En cuanto a la funcionalidad real, puede ejecutar PHP arbitrario, pero es una buena práctica utilizar las API de WP para compatibilidad y confiabilidad.

Piense en su código en el contexto de WP como include(que será técnicamente). A partir de ahí, el alcance de sus necesidades y recursos determinará cuánto se reescribirá para ser específico de WordPress.

Rarst
fuente
0

Sí, es posible.

La mayoría de los complementos se crean a través de lo que se llaman ganchos:

por ejemplo:

add_action("hook", "function")

es bastante fácil crear un complemento una vez que sepa cómo funciona ese marco, bueno ... recomendaría que se familiarice con él, el lugar más extenso para el conocimiento (aunque no el más organizado, como php. net) es el códice de wordpress .

Itai Sagi
fuente