Uso de WordPress para el desarrollo de aplicaciones web consultas de base de datos personalizadas

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

Hasta ahora, hemos cubierto mucho terreno:

  • Hemos hablado de cómo WordPress es más una base que un marco..
  • Hemos discutido la naturaleza del patrón de diseño impulsado por eventos.
  • Ha habido una discusión sobre correo electrónico, administración de usuarios, almacenamiento de datos, recuperación de datos
  • … y más.

En los artículos más recientes, hemos analizado cómo manejar las consultas en la base de datos de WordPress mediante el uso de WP_Query y WP_User_Query.

En este artículo, vamos a completar la discusión hablando sobre cómo podemos ejecutar consultas directas de SQL en la base de datos..

Consultas directas contra la base de datos

Específicamente, vamos a ver las operaciones estándar para SELECCIONAR, ACTUALIZAR, INSERTAR, BORRAR, Y más, vamos a echar un vistazo a los ejemplos de cada uno. Luego, finalizaremos nuestra discusión hablando sobre la parametrización para que podamos escribir consultas seguras.

Dicho esto, veamos las operaciones disponibles, los ejemplos de cada uno y cómo podemos incorporarlos en nuestro trabajo..

SELECCIONAR

Para aquellos de ustedes que son nuevos en escribir consultas de SQL, entonces es importante entender los términos para cada uno de los tipos de consultas que estamos realizando para estar ejecutando. Primero, estamos hablando de la SELECCIONAR declaración.

Simplemente pon, SELECCIONAR las declaraciones son responsables de recuperando Datos de la base de datos para que podamos leer la información..

Uno de los ejemplos más básicos que podemos dar es cómo recuperar un título de publicación de la wp_posts mesa:

 // Siempre globalice $ wpdb global $ wpdb; // Seleccione una sola variable: el título de la publicación de la primera publicación $ title = $ wpdb-> get_var ("SELECT post_title FROM $ wpdb-> posts WHERE ID = 1;"); echo $ titulo;

Por supuesto, esto supone que está familiarizado con el esquema de la base de datos, pero hemos cubierto esto en artículos anteriores..

Por supuesto, dentro del contexto de WordPress, no podemos simplemente definir una consulta y hacer que se ejecute; en su lugar, debemos asegurarnos de que la estamos pasando a la API adecuada. Entrar $ wpdb.

Directamente desde el Codex:

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

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

Así que hay una advertencia aquí que aún no hemos encontrado en nuestro trabajo hasta este punto: $ wpdb La variable global es global, lo que significa que cada vez que deseamos acceder a ella, debemos asegurarnos de que prefijamos la global palabra clave antes de que.

 $ wpdb global; // Seleccione una fila completa de información de la primera publicación $ info = $ wpdb-> get_row ("SELECT * FROM $ wpdb-> posts WHERE ID = 1;"); print_r ($ info); // Obtenga todos los títulos de las publicaciones (y las páginas y los tipos de publicaciones personalizadas) que tienen una ID inferior a 10 $ títulos = $ wpdb-> get_col ("SELECT post_title FROM $ wpdb-> posts WHERE ID < 10;" ); print_r( $titles ); // Retrieve a generic result set of post IDs and post titles from the posts table where posts have an ID less than 10 $results = $wpdb->get_results ("SELECT ID, post_title FROM $ wpdb-> posts WHERE ID < 10;" ); print_r( $results );

Si esto es nuevo para usted, no se preocupe: veremos cómo hacerlo en este artículo..

Aquellos que son más avanzados son más que capaces de manejar consultas más complejas.

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

Además, tome nota de qué tipo de consultas devuelven variables individuales y qué tipo de consultas devuelven colecciones, ya que esto determinará cómo puede administrar la información una vez que se recupera. Tal vez le devuelvas el eco a la página, o quizás termines recorriéndolo.

INSERTAR

Por supuesto, recuperar información no es más que uno forma en que los datos se gestionan dentro de la base de datos de WordPress. Después de todo, para recuperar algo, debe tener datos que realmente estén almacenados en las tablas de la 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 sus propias consultas para insertar información sea la clave. camino a seguir.

Tenga en cuenta que en todos los ejemplos que veremos, echamos un vistazo a algunas consultas relativamente simples. Esto se hace para que aquellos de ustedes que nunca han escrito SQL en el contexto de WordPress (o en cualquier contexto, realmente) puedan seguir fácilmente.

Insertar datos es algo que debe hacerse con cuidado, no solo porque está escribiendo tablas en una (o varias) tablas, sino porque quiere asegurarse de que no vaya a chocar con datos que ya existen.

Aunque las bases de datos pueden tener restricciones que le permiten hacer esto, me parece que siempre es seguro tomar medidas preventivas a nivel de código para, por ejemplo, verificar si existe algo antes de insertarlo. De esa manera, puede realizar una actualización en lugar de una inserción (que veremos momentáneamente).

Pero si está seguro de que está listo para insertar información, aquí hay algunos ejemplos para comenzar..

 $ wpdb global; // En la tabla de publicaciones, inserte una publicación publicada con un título y contenido con el ID de publicación arbitraria de 9999 $ wpdb-> insert ('wp_posts', array ('id' => 9999, 'post_title' => 'Insertar publicación ',' post_status '=>' publish ',' post_content '=>' Ejemplo de contenido para una publicación insertada vía consulta directa. '), matriz ('% d ','% s ​​','% s ​​','% s '));

Al igual que con el SELECCIONAR Consultas, estos ejemplos están destinados a ser básicos. Los principiantes deben poder recogerlos fácilmente, los usuarios avanzados deben entender cómo llevar esto al siguiente nivel con muy poco esfuerzo..

ACTUALIZAR

Como se mencionó en la sección anterior, puede haber ocasiones en las que deseamos actualizar los datos en lugar de insertar nuevos datos. En casos así, estamos buscando el ACTUALIZAR operación ya que esto nos permitirá tomar una fila de información existente, actualizar los datos y luego guardarlos en la base de datos.

Esencialmente, esto es ideal en casos donde existente la información necesita ser ajustada.

 $ wpdb global; // Actualizar el título y el contenido de la publicación de la fila de la tabla de la publicación hat tiene el ID de 9999 $ wpdb-> update ('wp_posts', array ('post_title' => 'Inserted Post (Updated)', 'post_content' => 'Ejemplo de contenido para una publicación * actualizada * mediante consulta directa'), matriz ('id' => 9999), matriz ('% d', '% s', '% s'), matriz ('% d' ));

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

BORRAR

los BORRAR la operación es lo que nos permite eliminar datos de la base de datos directamente sin utilizar ninguna de las API de WordPress. El poder para hacer esto es que puede pasar por alto las funciones y condicionales habituales que se pueden requerir para eliminar información.

La desventaja, sin embargo, es que puede ser peligroso eliminar directamente la información de la base de datos, ya que sin los controles adecuados y la codificación defensiva, una vez que los datos desaparecen, desaparecen para siempre..

 $ wpdb global; // Elimine el registro de la base de datos donde la columna de ID tiene el valor 9999 $ wpdb-> delete ('wp_posts', array ('ID' => 9999), array ('% d'));

Mientras observamos estas operaciones, hemos visto cómo podemos trabajar directamente con la base de datos al pasar por encima o evitar la API (dependiendo de cómo desee verla), pero lo último que necesitamos es tomar una decisión. mirar es exactamente cómo asegurarnos de que estamos escribiendo las consultas más seguras que podamos.

Parametrización

Hasta este momento, hemos estado pasando datos a las consultas en línea; esto significa que cada vez que insertamos o actualizamos datos en la base de datos, lo hemos hecho sin haberlo evitado adecuadamente..

Si no manejamos estos tipos de condiciones con cuidado, entonces deja la puerta abierta para que más usuarios malintencionados aprovechen nuestro código y posiblemente inyecten datos maliciosos en las tablas de la base de datos..

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

 $ wpdb global; $ id = 10000; $ title = "Una publicación parametrizada"; $ content = "Esta publicación ha sido insertada usando una consulta parametrizada."; $ parametersized_result = $ wpdb-> query ($ wpdb-> prepare ("INSERT INTO $ wpdb-> posts (id, post_title, post_content) VALUES (% d,% s,% s)", array ($ id, $ title , $ contenido)));

Ahora, si ha estado siguiendo de cerca junto con el resto de la información en este artículo, entonces ya ha visto una funcionalidad similar de sustitución, como % s, %re, y así sucesivamente cada uno de los cuales representa una cadena y un número respectivamente.

Lo diferente, en este caso, es que no solo almacenamos nuestros valores en variables antes de pasarlos a la consulta, sino que también pasamos la consulta completa a la preparar función que tomará la consulta y realizará el escape correcto de SQL en los datos para garantizar que tengamos las consultas seguras y debidamente preparadas.

El WordPress Codex tiene un artículo detallado sobre Validación de datos que debe ser leído por cualquier persona que trabaje en complementos, temas y aplicaciones. De hecho, recomiendo leer esto después de esta publicación en particular, ya que expondrá la información que hemos discutido aquí..

Hasta la próxima

Este artículo está destinado a servir como guía para dirigir las consultas de la base de datos de WordPress; de ninguna manera pretende ser una guía exhaustiva; sin embargo, al familiarizarse con la información que está aquí, leer el resto del material en el Codex y practicar estas consultas en su propio trabajo, será Mejora tus habilidades en relación con el trabajo con la base de datos subyacente..

En el próximo artículo, vamos a concluir esta serie revisando todo lo que hemos hablado en los últimos artículos, así como la forma de avanzar con futuros proyectos o aplicaciones, ahora que hemos echado un vistazo. en todo lo que WordPress tiene para ofrecer.