Interactuar con la base de datos de con la instancia $wpdb

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);