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:
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..
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..
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.
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..
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??
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.
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í..
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.