Los estándares de codificación de WordPress: consultas de base de datos y formato de consultas SQL
Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)
Aparte del sumario que vamos a proporcionar como último artículo de esta serie, esta es la última explicación sobre los estándares de codificación de WordPress que vamos a cubrir en esta serie.
Vamos a cubrir los matices de las consultas a la base de datos y cómo dar formato a SQL en el contexto del código.
Por supuesto, esto no estaría exento de su propio conjunto de advertencias: En términos generales, ya existen API a nuestra disposición que pueden evitar que tengamos que escribir SQL por nuestra cuenta; sin embargo, estas API no detectan cada uno de los casos que realmente podamos necesitar.
Después de todo, ¿cómo pueden los desarrolladores que implementan API saber qué y cómo vamos a crear algo exactamente?
Para ello, vamos a echar un vistazo a las API que están disponibles para ejecutar consultas de base de datos, a cómo usarlas y, a continuación, a cómo definir nuestras propias consultas cuando las API se quedan cortas.
Consultas de bases de datos en WordPress
Como se mencionó en la introducción de este artículo, existen una serie de API que nos permiten crear nuestras propias consultas sin necesidad de escribir SQL.
La razón por la que es importante familiarizarse y aprender estas API es para que el código que escribas esté escrito sobre la base del nivel de abstracción proporcionado por WordPress para asegurarnos de que las consultas estén tan optimizadas como sea posible (dada la versión actual).
Además, aumenta la probabilidad de que cualquier código que escribas hoy sea compatible con futuras versiones de WordPress principalmente porque, de nuevo, está escrito al correspondiente nivel de abstracción que proporciona WordPress.
Si cambia el esquema de tabla, los parámetros se asignan a diferentes cláusulas en el SQL, etc., no tienes que preocuparte por ello, ya que la API se encargará de ello por ti.
¿Qué son las API de consulta?
Entonces, ¿cuáles son las API de consulta que define WordPress?
-
WP_Query
está orientado a ser utilizado para consultar información sobre cualquier tipo de entrada y su correspondiente autor, categoría, taxonomías, tipo, estado, etc. en atributos. -
WP_User_Query
está diseñado para usarse cuando necesitamos recuperar información de la tabla de usuario y de la tabla usermeta. También nos permite trabajar con roles, campos personalizados y mucho más.
También existen otros métodos de API de WordPress que hacen que sea muy fácil extraer cosas de distintas tablas de la base de datos, algunas de las cuales ni siquiera requieren un número significativo de argumentos:
-
get_post_meta
recupera datos meta asociados con un ID. Puede recuperar todos los datos meta o el valor de una clave concreta. -
get_comment_meta
recupera datos meta asociados a un ID de comentario determinado. Puede recuperar todos los datos meta o el valor de una clave específica. -
get_user_meta
recupera datos meta asociados a un ID de usuario determinado (¿estás empezando a ver aquí un tema?). Puede recuperar todos los datos meta o el valor de una clave específica.
Ten en cuenta que el propósito de este artículo no es profundizar en cada una de estas API (además existen muchas más), simplemente darlas a conocer entre aquellos de vosotros que no las hayan utilizado previamente, y proporcionar una breve definición de cuándo pueden usarse.
En última instancia, estas son las API que debes examinar primero antes de escribir tu propio SQL. Vale la pena, y aquí estoy hablando desde mi experiencia: Ha habido momentos en los que he escrito código (o incluso entradas de blog) que se han roto porque no estaban usando las mejores prácticas para consultar la base de datos.
Pero, como mencionamos anteriormente, estas API no pueden predecir todos los casos en los que necesitamos escribir nuestras consultas de base de datos. En esas situaciones, WordPress proporciona un objeto que nos permite interactuar directamente con la base de datos.
Todo sobre $wpdb
Esto nos lleva a $wpdb
. Esencialmente, $wpdb
es un objeto disponible en WordPress que nos permite interactuar directamente con la base de datos. Esto significa que podemos escribir SQL sin procesar y hacer que se ejecute en la base de datos subyacente.
Además de eso, podemos seleccionar cómo queremos que se devuelvan los datos: matrices, objetos, a veces valores individuales, etc. De hecho, el objeto ofrece la capacidad de realizar las siguientes funciones:
-
SELECT
– Seleccionar variables, filas, columnas y resultados genéricos -
INSERT
– Insertar filas -
UPDATE
– Actualizar filas existentes
Tal vez la mayor preocupación al introducir SQL sin procesar en tu proyecto sea que estás abriéndolo a un posible comportamiento malicioso. Aunque podrías argumentar esto para cualquier lógica de base de datos, lo cierto es que las API deberían hacer un buen trabajo protegiéndonos de algo así.
En términos generales, lo hacen.
Pero $wpdb
tampoco está exento de esto. Existen formas específicas de interactuar con la base de datos para que puedas proteger las consultas contra la inyección de SQL.
Reiteración de un punto de los Estándares de codificación:
Si tienes que tocar la base de datos, ponte en contacto con algunos desarrolladores publicando un mensaje en la lista de correo wp-hackers. Es posible que quieran considerar la creación de una función para la próxima versión de WordPress que cubra la funcionalidad que deseas.
Por lo tanto, en resumen, si la API no cumple con lo que necesitas, $wpdb
podría ser tu mejor opción, pero recomiendo usarla solo si has agotado el resto de tus opciones.
Conclusión
En este punto, hemos examinado los Estándares de codificación en un nivel de detalle que espero que te equipe con información que no tenías antes de comenzar esta serie.
Para concluir este artículo concreto, la idea principal con la que quiero que todo os quedéis, es la siguiente:
- Comprueba la API antes de escribir SQL en línea. A pesar de que escribir consultas SQL directas puede ser más fácil, especialmente para aquellos expertos en sistemas de bases de datos, ¡resistid el impulso! Comprueba primero la documentación de la API.
- Si no puedes encontrar una función de API para realizar tu trabajo, escribe SQL. Si debes escribir SQL, asegúrate de tener en cuenta todas las cosas necesarias: cómo deseas que se devuelvan los datos, de preparar correctamente las consultas y de estar controlando correctamente los datos cuando estos son devueltos.
Si lo haces, deberías tener tus bases cubiertas.
En el artículo final de esta serie, tendremos una guía rápida que resume todo lo que hemos explicado a lo largo de la serie.