Cómo obtener registros de la base de datos en WordPress
index.php
:
<?php $new=$wpdb->query("select * from wp_posts where post_title='Auto Draft'");
$new1=mysql_fetch_row($new);
echo $new1[0];
?>
¿Cómo obtener registros de la base de datos?
¿Cómo funciona la base de datos con los archivos de WordPress?

wpdb
es un envoltorio simple alrededor de las funciones mysql_*
, pero no puedes mezclarlas y combinarlas. $wpdb->query
no devuelve la referencia a la base de datos que necesita mysql_fetch_row
. Esto...
...devuelve un entero correspondiente al número de filas afectadas/seleccionadas. Si hay un error de MySQL, la función devolverá FALSE. (Nota: como pueden devolverse tanto 0 como FALSE, asegúrate de usar el operador de comparación correcto: igualdad == vs. identidad ===).
Solo tienes que leer el Codex.
Por lo tanto, $wpdb->query
es realmente para consultas que no devuelven datos, como un DELETE.
Lo que necesitas es:
$new = $wpdb->get_results("select * from wp_posts where post_title='Auto Draft'");
También deberías usar prepare
si estás utilizando datos proporcionados por el usuario.
$new = $wpdb->get_results($wpdb->prepare("select * from wp_posts where post_title=%s",$str));
Esto devolverá un objeto
, pero puedes pasar un segundo parámetro para obtener un array
. Puedes iterar sobre ese objeto o array con las operaciones habituales de objetos/arrays de PHP.
También existen $wpdb->get_var
y $wpdb->get_col
.
La base de datos contiene, como en cualquier otra aplicación PHP/MySQL, tu contenido dinámico: posts, páginas, opciones configurables, tablas de categorías, etc. No es una lista fácilmente enumerable.
En cuanto a la pregunta en el comentario, "¿en qué caso necesitamos usarlo con mayor probabilidad?" No tengo idea. Depende de lo que estés haciendo. Realmente no es algo que se pueda responder, pero diría que en la mayoría de los casos no deberías necesitar, ni tampoco deberías de todas formas, escribir SQL para manipular la base de datos. Hay muchas funciones principales para eso: WP_Query
, WP_User_Query
, set_option
, update_post_meta
, wp_update_post
, y la lista continúa por unas veinte líneas más.

¡Qué amable de tu parte :) ¿Cuál es el papel de la base de datos? Me refiero a cómo usar consultas de base de datos en WordPress y en qué casos es más probable que necesitemos usarlas. Muchas gracias

@s_ha_dum ¿Puedes revisar los puntos a continuación?
- Has mencionado $wpdb->query es realmente para consultas que no devuelven datos, como un delete.
pero en el caso de una consulta de eliminación $wpdb->query
devolverá el número de registros afectados.
- Has usado $wpdb->results
. ¿No debería ser $wpdb->get_results
?
