如何访问WordPress数据与仪表盘?Django自定义仪表盘集成WordPress字段
你的WordPress问题解答
嘿,这两个问题都是我日常开发里经常碰到的,给你详细拆解下解决方案:
1. 如何访问WordPress的数据及仪表盘?
先讲最基础的仪表盘访问
直接在你的WordPress站点域名后面加上 /wp-admin/ 就行,比如你的站点是 example.com,那访问 example.com/wp-admin/,输入你当初设置的管理员账号密码,就能进到仪表盘后台了。登录后你能在左侧菜单找到所有数据入口——比如插件管理页看已启用插件,外观页看当前主题,仪表盘首页也会显示WordPress版本信息。
要是需要直接碰底层数据
有两种常用方式:
- 数据库直接查看:WordPress所有数据都存在MySQL/MariaDB里,你可以通过主机面板里的phpMyAdmin,或者Navicat这类数据库工具连接进去。核心信息基本都在
wp_options表里:- 启用插件列表存在
active_plugins字段; - 当前启用主题的目录名存在
template和stylesheet字段; - WordPress版本号存在
version字段。
注意:表前缀不一定是wp_,要看你安装WordPress时的设置。
- 启用插件列表存在
- 用WordPress内置函数获取:如果是在WordPress主题或插件里开发,直接用官方提供的函数更方便:
get_option('active_plugins')拿启用插件列表;wp_get_theme()获取当前主题的详细信息;get_bloginfo('version')直接返回WordPress版本号。
2. Django自定义仪表盘获取WordPress字段展示
要把WordPress的这些数据拿到Django的自定义仪表盘里展示,我推荐两种靠谱的方法,你可以根据自己的环境选:
方法一:用WordPress REST API(推荐)
WordPress 4.7版本之后内置了REST API,不用额外装插件就能用,步骤很简单:
- 确认API可访问:先访问你的WordPress站点的
yourdomain.com/wp-json/,如果能看到一堆JSON格式的API端点信息,说明正常。如果不行,去WordPress后台「设置-固定链接」里把固定链接改成非默认模式(比如选「文章名」),API就能正常工作了。 - 在Django里写请求逻辑:
用Python的requests库发GET请求到对应的API端点就行,给你个示例视图代码:
要是你的WordPress站点需要登录才能访问API,那就装个「JWT Authentication for WP REST API」插件,生成token后在请求头里加上import requests from django.shortcuts import render def wp_dashboard_data(request): wp_site = "https://你的WordPress站点域名.com" # 初始化默认值 active_plugins = [] active_theme = "" wp_version = "" # 获取启用插件 plugins_res = requests.get(f"{wp_site}/wp-json/wp/v2/options/active_plugins") if plugins_res.status_code == 200: active_plugins = plugins_res.json() # 获取当前主题 theme_res = requests.get(f"{wp_site}/wp-json/wp/v2/options/template") if theme_res.status_code == 200: active_theme = theme_res.json() # 获取WP版本 version_res = requests.get(f"{wp_site}/wp-json/wp/v2/options/version") if version_res.status_code == 200: wp_version = version_res.json() # 把数据传到模板 return render(request, "你的仪表盘模板.html", { "active_plugins": active_plugins, "active_theme": active_theme, "wp_version": wp_version })Authorization: Bearer 你的token就行。
方法二:直接连接WordPress数据库
如果你的Django服务器能直接访问WordPress的数据库,这种方法更直接:
- 在Django配置里加额外数据库:
打开settings.py,在DATABASES里加个WordPress的数据库配置:DATABASES = { 'default': { # 你的Django默认数据库配置 }, 'wordpress': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'WordPress的数据库名', 'USER': '数据库用户名', 'PASSWORD': '数据库密码', 'HOST': 'localhost', # 数据库服务器地址,本地的话就是localhost 'PORT': '3306', } } - 写查询逻辑:
可以用Django的connections执行原始SQL查询,示例代码:
注意:记得把表前缀from django.db import connections from django.shortcuts import render import ast # 用来解析WordPress存在数据库里的序列化数组 def wp_data_from_db(request): active_plugins = [] active_theme = "" wp_version = "" with connections['wordpress'].cursor() as cursor: # 查询启用插件 cursor.execute("SELECT option_value FROM wp_options WHERE option_name = 'active_plugins'") plugins_raw = cursor.fetchone() if plugins_raw: # 数据库里存的是序列化的Python数组,需要解析 active_plugins = ast.literal_eval(plugins_raw[0]) # 查询当前主题 cursor.execute("SELECT option_value FROM wp_options WHERE option_name = 'template'") theme_raw = cursor.fetchone() if theme_raw: active_theme = theme_raw[0] # 查询WP版本 cursor.execute("SELECT option_value FROM wp_options WHERE option_name = 'version'") version_raw = cursor.fetchone() if version_raw: wp_version = version_raw[0] return render(request, "你的仪表盘模板.html", { "active_plugins": active_plugins, "active_theme": active_theme, "wp_version": wp_version })wp_改成你实际的前缀哦!
最后给你个小建议
不管用哪种方法,都尽量给获取到的数据加个缓存(比如Django的缓存框架),别每次请求都去拉WordPress的数据,既能提升性能,也不会给WordPress站点造成额外压力。
内容的提问来源于stack exchange,提问作者Shri Hegde
相关产品推荐
相关产品推荐

