Podemos crear nuestras propias consultas en WordPress gracias a la clase wpdb. La clase wpdb contiene una serie de funciones para interactuar con la base da datos y asi poder comunicarnos con ella. De esta forma podemos sacar mas jugo a nuestros propios plugins.
Como usarla
No podemos acceder a los metodos de esta clase directamente , es necesario antes de usarla definirla como global ( una forma de acceder a una variable en cualquier lado del codigo en php) .
Por ejemplo si queremos ejecutar una consulta en WordPress hariamos lo siguiente:
global $wpdb; $resultados= $wpdb->get_results( "SELECT id, name FROM mitablaejemplo" );
Una vez definida la variable como global, tendremos acceso a ella y podremos usarla. De esta manera estaremos obteniendo los resultados de “mitablaejemplo”
Funciones mas usadas.
get_var() | Devuelve una variable ( un unico resultado, un valor,..) |
get_row() | Devuelve una fila de una tabla de la base de datos |
get_col() | Devuelve una columna de una tabla de la base de datos |
get_results() | Devuelve una lista de resultados ( las mas comun) |
insert() | Para realizar insercciones $wpdb->insert( $table, $data, $format ); |
replace() | Para actualizar tablas y reemplazos |
update() | Para actualizar una fila |
delete () | Para borrar una fila |
query() | Para cualquier consulta |
prepare() | Se usa para proteger de ataques de inyeccion de sql. |
Existen mas funciones como limpiar la cache , .. aqui os dejo clase wpdb y referencia oficial
Por otro lado WordPress provee otras clases para trabajar con las tablas de Usuarios , Comentarios , WP_Query para los post de forma mas cómoda.
- WP_Query – clase para trabajar con post y paginas
- WP_Comment_Query – Clase para trabajar con comentarios
- WP_User_Query – Clase para trabajar con Usuarios
Por ejemplo si queremos obtener los usuarios de tipo suscriptor se podria hacer con una query (estariamos operando entre varias tablas) pero de esta manera podemos pasar argumentos y facilitar un poco el trabajo.
En este ejemplo vemos como devolver una lista de usuarios con rol suscriptor
$user_query = new WP_User_Query( array( 'role' => 'Subscriber' ) );
La clase wpdb nos ayuda para trabajar con nuestras propias consultas pero no quiere decir que sea el mejor metodo por ejemplo para crear una pagina, para ello nos podemos apoyar en funciones que ya trae WordPress para trabajar de forma mas sencilla que el hacer una insercion de toda la vida.
Ejemplo de crear un articulo con wp_insert_post()
$simple_area = wp_insert_post( array( 'post_title' => __( 'Simple Area', 'simple-wp' ), 'post_content' => 'Esto es un ejemplo', 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'comment_status' => 'closed' ) );
Conclusión
Esta clase nos ayuda para trabajar con querys especificas pero WordPress tiene muy bien atado como trabajar con sus elementos sin necesidar de lanzar query a pelo de toda la vida.