wpdb consultas con WordPress


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.

 

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.