Performance: Direct database queries (wpdb)
Direct database queries affect page load speed by controlling how fast data is fetched and how many queries run during a request.
$placeholders = implode(',', array_fill(0, count($ids), '%d')); $query = $wpdb->prepare("SELECT * FROM wp_table WHERE id IN ($placeholders)", ...$ids); $results = $wpdb->get_results($query);
$results = []; foreach ($ids as $id) { $results[] = $wpdb->get_row($wpdb->prepare("SELECT * FROM wp_table WHERE id = %d", $id)); }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Multiple queries in loop | N queries to DB | 0 (server-side) | Blocks initial paint until data arrives | [X] Bad |
| Single batched query | 1 query to DB | 0 (server-side) | Faster data fetch, quicker paint | [OK] Good |
$wpdb object in WordPress?$wpdb$wpdb is a WordPress class that allows running SQL queries directly on the database.$wpdb = direct database queries [OK]$wpdb is for database queries only [OK]$wpdb with theme or user management$wpdb handles styling or sessions$wpdb?$wpdb->prepare() safely inserts variables into SQL queries using placeholders like %d.prepare correctly with %d and variable $id. Others either lack preparation or use wrong methods.prepare with placeholders [OK]prepare with %d, %s for safe queries [OK]wp_users table has 3 users?$count = $wpdb->get_var("SELECT COUNT(*) FROM wp_users");get_var usageget_var returns a single value from the database, here the count of users.wp_users, which is 3 users.get_var returns single value count [OK]get_var returns one value, not arrays [OK]get_var with get_results$results = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_status = 'publish'");
foreach($results as $post) {
echo $post->post_title;
}prepare is not required here.get_results returns an array of objects; looping with $post is correct. No syntax error here.prepare [OK]prepare when variables are in query [OK]get_results with query$post_id safely using $wpdb. Which code snippet correctly does this?$wpdbprepare to safely insert variables, then run query with prepared SQL.prepare but does not assign or run the result properly. $wpdb->query("UPDATE wp_posts SET post_title = '$new_title' WHERE ID = $post_id"); is unsafe. $wpdb->update('wp_posts', ['post_title' => $new_title], ['ID' => $post_id]); uses update method but misses table prefix and is not asked here.prepare result before running query [OK]prepare without assigning resultupdate method usagePass the test and this pattern moves unknown