Consultas a la base de datos en WordPress
Vuelvo a retomar la costumbre de escribir artículos aquí, con uno sobre WordPress, en este caso, con algo que más de uno nos hemos visto en la necesidad de hacer, acceder a una tabla de la base de datos desde el código de nuestra web hecha en WordPress.
Lo típico sería realizar la conexión usando las funciones de PHP pensadas para esa labor, como mysql_query, mysql_fetch_row … Pero ya que estamos en WordPress, hagamos uso del motor de conexión que tiene implementado internamente para realizar esta tarea.
Lo primero es hacer global la variable $wpdb, instancia de la clase preparada para hacer conexiones con la base de datos, una vez hecho, usamos las funciones de esta variable para realizar consultas, veamos un ejemplo:
<?php global $wpdb; $consulta = "SELECT * FROM tabla WHERE 1"; $resultado = $wpdb->get_results( $consulta ); foreach ( $resultado as $fila ): echo $fila->columna; endforeach; ?>
Con este ejemplo hemos buscado todos los elementos de una tabla en concreto y hecho un recorrido por ellos mostrando el contenido de una de sus columnas. Es importante notar que la tabla a la que accedemos está en la misma base de datos con la que trabaja nuestro WordPress, en caso contrario, se puede hacer uso del plugin hyperdb.
Otros métodos que pueden resultarnos interesantes de la variable $wpdb son:
$wpdb->query('query'); // Hace una consulta sin devolver resultado.
$wpdb->get_var('query',column_offset,row_offset); // Obtiene el valor de un campo concreto, devuelve un valor.
$wpdb->get_row('query', output_type, row_offset); // Devuelve una fila concreta.
$wpdb->num_rows; // Devuelve el número de filas afectadas por la consulta realizada anteriormente.
El parámetro column_offset y row_offset nos indica la fila y columna deseada, empezando desde 0. El parámetro output_type indica cómo queremos que devuelva las filas obtenidas, puede tener tres valores:
OBJECT: Devuelve objetos, cada fila es accesible con los operadores->($fila->columna).ARRAY_A: Devuelve arrays asociativos ($fila['columna']).ARRAY_N: Devuelve arrays numerados ($fila[0]).
Y con esto tendríamos un ejemplo básico de cómo hacer accesos a la base de datos fuera de los típicos recorridos sobre los posts de nuestro WordPress.