Interactuar con la base de datos de WordPress con una instancia de la clase u objeto global $wpdb
🎆 Permite realizar consultas SQL seguras.
🎆 Alternativa segura de las funciones de PHP mysql_*
🎆 Dispone de distintos métodos preparados para usar en WordPress. $wpdb->get_results()
, $wpdb->get_var()
, $wpdb->insert()
, $wpdb->query()
…
🎆 ¡Importante! Escapar todos los valores no fiables para evitar ataques de inyección SQL. Disponible el método $wpdb→prepare()
.
🎆 Puedes crear una tabla personalizada en la base de datos de WordPress.
🎆 Úsala para comprobar y verificar si existe una tabla en la base de datos.
🎆 Para obtener un listado de usuarios con un rol específico.
🎆 Muy útil para programadores de plugins y temas personalizados.
🎆 Siempre en tu radar si estas trabajando en: Multisitios, Áreas de usuarios, revista o periódico online, Addons o funciones personalizadas para otros plugins existentes, CRM, IA..

//Listado de usuarios con el ros «suscriber»
global $wpdb;
$role = 'subscriber';
$users = $wpdb->get_results($wpdb->prepare(
"SELECT ID, user_login FROM $wpdb->users INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key = %s AND $wpdb->usermeta.meta_value = %s",
$wpdb->prefix . 'capabilities',
'%"'.$role.'"%'
));
foreach ($users as $user) {
echo $user->user_login . '<br>';
}
//Contar el número de comentarios en espera de moderación
global $wpdb;
$comment_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '0'");
echo $comment_count;
//Crear una tabla personalizada.
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_table';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
column1 text NOT NULL,
column2 text NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);