Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Creative Coding

Uso de WordPress para el desarrollo de aplicaciones web: Consultas personalizadas a la base de datos

by
Read Time:9 minsLanguages:

Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)

A lo largo de esta serie, hemos estado mirando las diversas instalaciones que hacen posible tratar WordPress como una base para el desarrollo de aplicaciones web.

Hasta ahora, hemos recorrido mucho terreno:

  • Hemos hablado sobre cómo WordPress es más una base fundacional que un framework.
  • Hemos hablado sobre la naturaleza del patrón de diseño controlado por eventos.
  • Ha habido un debate sobre el correo electrónico, la gestión de usuarios, el almacenamiento de datos, y la recuperación de datos
  • ... y mucho más.

En los artículos más recientes, hemos estado hablando de cómo gestionar las consultas a la base de datos de WordPress a través del uso de WP_Query y WP_User_Query.

En este artículo, vamos a completar el debate hablando de cómo podemos ejecutar consultas SQL directas a la base de datos.

Consultas directass a la base de datos

Específicamente, vamos a ver las operaciones estándar para SELECT, UPDATE, INSERT, DELETE, y más, echaremos un vistazo a ejemplos de cada una. A continuación, finalizaremos nuestra explicación hablando sobre la parametrización para que podamos escribir consultas seguras.

Dicho esto, echemos un vistazo a las operaciones disponibles, ejemplos de cada una, y a cómo podemos incorporarlas a nuestro trabajo.

SELECT

Para aquellos de vosotros que seáis nuevos en la creación de consultas SQL, es importante comprender los términos para cada uno de los tipos de consultas que estamos escribiendo para ejecutar. Primero, estamos hablando de la instrucción SELECT.

En pocas palabras, las instrucciones SELECT son responsables de recuperar datos de la base de datos para que podamos leer la información.

Uno de los ejemplos más básicos que podemos dar sobre esta consulta es cómo recuperar el título de una entrada de la tabla wp_posts:

Por supuesto, esto supone que estás familiarizado con el esquema de la base de datos, por si acaso, hemos tratado esto en artículos anteriores.

Por supuesto, en el contexto de WordPress, no podemos definir simplemente una consulta y hacer que se ejecute, en lugar de eso, tenemos que asegurarnos de que la estamos pasando a la API adecuada. Introduce $wpdb.

Directamente desde el Codex:

WordPress proporciona una variable global, $wpdb, que es una creación de instancias de la clase ya configurada para hablar con la base de datos de WordPress.

El objeto $wpdb se puede utilizar para leer datos de cualquier tabla en la base de datos de WordPress (como tablas de plugins personalizadas), no solo las tablas estándar que WordPress crea.

Así que hay una advertencia aquí que aún no habíamos encontrado en nuestro trabajo hasta el momento: La variable $wpdb es global, lo que significa que en cualquier momento que queramos acceder a ella, necesitamos asegurarnos de que prefijamos la palabra clave global antes de ella.

Si esto es nuevo para ti, no te preocupes, en este artículo vamos a echar un vistazo a cómo hacer exactamente esto.

Aquellos de vosotros que seáis más avanzados seréis más que capaces de realizar consultas más complejas.

Ten también en cuenta que todas las consultas se establecen entre comillas dobles. Esto es para que podamos usar la variable $wpdb dentro de la cadena y no tener que realizar ninguna concatenación de cadenas que pueda complicar el aspecto del código.

Ten en cuenta, además qué tipo de consultas devuelven variables individuales y qué tipo de consultas devuelven colecciones, ya que esto determinará cómo puedes administrar la información una vez que sea recuperada. Tal vez te hagas eco de ella de vuelta a la página, o tal vez termines recorriéndola en bucle.

INSERT

Por supuesto, recuperar información no es más que una forma en la que los datos son gestionados dentro de la base de datos de WordPress. Después de todo, para recuperar algo, debes tener datos que realmente estén almacenan dentro de las tablas de base de datos.

Aunque la API de WordPress hace que esto sea relativamente fácil de hacer desde una perspectiva de programación (especialmente a través del uso de algunas de las API que acabamos de revisar en los últimos dos artículos), puede haber ocasiones en las que escribir tus propias consultas para insertar información sea el camino a seguir.

Ten en cuenta que en todos los ejemplos que vamos a ver, echamos un vistazo a algunas consultas relativamente simples. Lo hacemos así para que aquellos de vosotros que nunca hayáis escrito SQL dentro del contexto de WordPress (o en cualquier contexto, realmente) seáis capaces de seguir fácilmente todo el artículo.

Insertar datos es algo que debe hacerse con cuidado, no simplemente porque estás escribiendo tabla en una (o varias) tablas, sino porque quieres asegurarte de que no vas a colisionar con los datos que ya existen.

Aunque las bases de datos pueden tener restricciones que te permitan hacer esto, me parece que siempre es seguro tomar medidas preventivas a nivel de código para, por ejemplo, comprobar si existe algo antes de insertarlo. De esta manera, puedes realizar una actualización en lugar de una inserción (algo a lo que echaremos un vistazo en un momento).

Pero si estás seguro de que estás preparado para insertar información, aquí tienes un ejemplo para empezar.

Al igual que con las consultas SELECT, estos ejemplos están destinados a ser fundacionales: los principiantes deben ser capaces de recogerlos fácilmente, los usuarios avanzados deben entender cómo llevar esto al siguiente nivel con muy poco esfuerzo.

UPDATE

Como se mencionó en la última sección, puede haber ocasiones en las que queramos actualizar los datos en lugar de insertar nuevos datos. En casos como ese, en realidad estamos buscando la operación UPDATE, ya que esto nos permitirá tomar una fila de información existente, actualizar los datos y, a continuación, guardarlos en la base de datos.

Esencialmente, esto es ideal en los casos en que sea necesario modificar la información existente.

Por supuesto, esto nos lleva a una operación más, si no pretendemos leer información, insertar información o actualizar información, ¿qué más estamos buscando hacer?

DELETE

La operación DELETE es lo que nos permite eliminar datos de la base de datos directamente sin usar ninguna de las API de WordPress. El poder para hacer esto es que tú eres capaz de pasar funciones habituales y condicionales que pueden ser necesarias para eliminar la información.

La desventaja, sin embargo, es que puede ser peligroso eliminar directamente la información de la base de datos, porque sin comprobaciones adecuadas y codificación defensiva, una vez que los datos se hayan ido, se habrán ido para siempre.

A medida que hemos revisado estas operaciones, hemos visto que podemos trabajar con la base de datos directamente obviando o evitando la API (dependiendo de cómo desees verlo), pero lo último a lo que tenemos que echar un vistazo es exactamente a cómo asegurarnos de que estamos escribiendo las consultas más seguras que podamos.

Parametrización

Hasta este punto, hemos estado pasando datos a las consultas en línea, esto significa que cada vez que hemos insertado o actualizado datos en la base de datos, lo hemos hecho sin escapar correctamente.

Si no manejamos este tipo de condiciones con cuidado, entonces se deja la puerta abierta para que más usuarios malintencionados se aprovechen de nuestro código y que puedan en potencia inyectar datos maliciosos en las tablas de la base de datos.

Entonces, ¿cómo evitamos que esto suceda? En resumen, aprovechamos la función prepare que existe en el objeto $wpdb y usamos marcadores de posición para representar nuestra información. Por supuesto, la forma más fácil de que entendamos esto es verlo en acción, así que echemos un vistazo a algunos ejemplos.

Ahora bien, si has estado siguiendo de cerca el resto de la información de este artículo, ya habrás visto una funcionalidad similar de sustitución como por ejemplo %s, %d, etc. representando cada uno de ellos una cadena y un número respectivamente.

La diferencia, en este caso, es que no solo almacenamos nuestros valores en variables antes de pasarlos a la consulta, sino que también estamos pasando toda la consulta a la función prepare que tomará la consulta y realizará el escape de SQL adecuado en los datos para asegurarnos de que hemos preparado correctamente, consultas seguras.

El Codex de WordPress tiene un artículo en profundidad sobre validación de datos que debería ser leído por cualquier persona que trabaje en plugins, temas y aplicaciones. De hecho, recomiendo leer esto después de este artículo en particular, ya que ampliará la información que hemos visto aquí.

Qué viene a continuación

Este artículo está destinado a servir como una iniciación a las consultas directas a la base de datos de WordPress, no está de ninguna manera destinado a ser una guía exhaustiva; sin embargo, al familiarizarte con la información aquí expuesta, leer el resto del material en el Codex y practicar estas consultas en tu propio trabajo, aumentarás tus habilidades en lo que se refiere a trabajar con la base de datos subyacente.

En el siguiente artículo, vamos a terminar esta serie revisando todo lo que hemos hablado a través de los últimos artículos, además continuaremos avanzando con futuros proyectos, o aplicaciones, ahora que hemos echado un vistazo a todo lo que WordPress tiene para ofrecer.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.