上一篇
WordPress通过全局对象
$wpdb操作数据库,开发者可直接调用其方法(如
get_results())执行SQL查询,需使用
prepare()方法防止注入,数据库配置信息存储在
wp-config.php中。
WordPress 的核心功能依赖于数据库存储所有内容(文章、页面、用户数据等),获取数据库信息主要有两种安全且推荐的方式:通过 WordPress 内置函数或使用 $wpdb 类执行自定义 SQL 查询,以下是详细操作指南:
通过 WordPress 内置函数获取数据(推荐)
WordPress 提供丰富的 API 函数,可安全高效地获取数据,无需直接操作数据库,常用函数包括:
-
WP_Query类
用于复杂查询,支持文章、页面、自定义类型等,示例:获取最新 5 篇文章<?php $args = array( 'post_type' => 'post', 'posts_per_page' => 5, 'orderby' => 'date', 'order' => 'DESC' ); $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); echo '<h2>' . get_the_title() . '</h2>'; echo '<div>' . get_the_excerpt() . '</div>'; } wp_reset_postdata(); // 重置查询数据 } ?> -
get_posts()函数
简化版查询,返回文章数组,示例:获取特定分类的文章<?php $posts = get_posts(array( 'category' => 3, // 分类ID 'numberposts' => 3 )); foreach ($posts as $post) { setup_postdata($post); echo '<h3>' . $post->post_title . '</h3>'; } wp_reset_postdata(); ?> -
其他常用函数

get_post_meta():获取文章自定义字段get_users():获取用户数据get_comments():获取评论get_option():获取网站设置(如siteurl)
使用 $wpdb 类执行自定义 SQL 查询
当内置函数无法满足需求时,可通过 $wpdb(WordPress 数据库抽象类)安全执行 SQL 查询,关键步骤:
-
全局调用
$wpdb
在主题文件(如functions.php)或插件中使用:global $wpdb;
-
编写安全的 SQL 查询
- 用
$wpdb->prepare()防止 SQL 注入 - 用
$wpdb->prefix兼容表前缀(如wp_posts)
示例:查询 ID 为 10 的文章标题
<?php global $wpdb; $post_id = 10; $query = $wpdb->prepare( "SELECT post_title FROM {$wpdb->prefix}posts WHERE ID = %d", $post_id ); $title = $wpdb->get_var($query); echo esc_html($title); ?>
- 用
-
常用
$wpdb方法get_results():返回多行结果(对象或数组)get_row():返回单行数据get_var():返回单个值(如标题、ID)insert()/update():安全写入数据
关键注意事项
-
安全第一
- 永远使用
$wpdb->prepare()处理用户输入(如$_GET)。 - 内置函数已内置安全机制,优先选用。
- 永远使用
-
性能优化
- 避免在循环中执行查询(可能导致服务器负载过高)。
- 使用缓存插件(如 Redis)或 WordPress 的
transientAPI 存储重复查询结果。
-
操作规范

- 非必要不直接修改数据库:错误操作可能导致网站崩溃。
- 备份数据:通过插件(如 UpdraftPlus)或主机面板定期备份数据库。
- 代码位置:自定义查询应放在子主题的
functions.php或自定义插件中,避免主题更新丢失。
何时需要直接访问数据库?
以下情况可通过 phpMyAdmin(主机面板提供)直接操作:
- 重置密码
- 迁移或批量修改数据
- 修复数据库错误
操作前务必备份!
(图示:phpMyAdmin 导出备份选项)
- 首选内置函数:安全、高效、兼容性好(如
WP_Query)。 - 复杂需求用
$wpdb:严格遵循安全规范。 - 避免直接操作:除非有数据库管理经验。
引用说明
本文方法遵循 WordPress 官方开发规范,参考:
- WordPress Developer Resources: WP_Query
- WordPress Codex: Database Access
- WordPress Security: Data Validation
数据操作前请务必阅读官方文档并备份数据库。
