Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

个人小程序

个人博客 / 作品集 / 相册 / 简历 / 联系方式 一体化小程序

架构:WordPress 后台 + 2 个 WordPress 插件 + 微信小程序前端,小程序预览:https://mp.weixin.qq.com/s/jlKUyh_KQMDMO_XtsRt4Gg


屏幕截图 2026-06-28 140023 屏幕截图 2026-06-28 140120 屏幕截图 2026-06-28 140207 屏幕截图 2026-06-28 140256

一、项目结构

chenliyun/
├── wordpress-probe.php          # WP 环境探针(上传到 WP 根目录用于诊断)
├── miniprogram/                 # 微信小程序前端(原生,非 uni-app)
│   ├── app.js / app.json / app.wxss
│   ├── project.config.json      # 微信开发者工具项目配置
│   ├── sitemap.json
│   ├── theme.json               # 深色模式主题
│   ├── pages/                   # 11 个页面
│   │   ├── home/                # 首页(轮播+卡片+工具栏+公告)
│   │   ├── blog/                # 笔记列表
│   │   ├── blog-detail/         # 笔记详情
│   │   ├── portfolio/           # 作品列表
│   │   ├── portfolio-detail/    # 作品详情
│   │   ├── diary/               # 日记列表
│   │   ├── diary-detail/        # 日记详情
│   │   ├── gallery/             # 相册瀑布流
│   │   ├── about/               # 关于(简历)
│   │   ├── contact/             # 联系
│   │   └── webview/             # 通用 webview
│   ├── components/              # 2 个组件
│   │   ├── nav-bar/             # 自定义导航栏
│   │   └── empty-state/         # 空状态
│   ├── custom-tab-bar/          # 自定义 tabBar(4 个 tab)
│   ├── images/                  # 静态图片(tabBar 图标、tab icon 等)
│   └── utils/
│       ├── config.js            # 全局配置(域名 / API Key / 环境切换)
│       ├── api.js               # REST API 封装层(680 行)
│       └── util.js
├── wp-plugin-api/               # 【插件 1】小程序 API 插件
│   └── chenliyun-api.php        # 提供 /wp-json/cl/v1/* 16 个端点
└── wp-plugin-admin-v5/          # 【插件 2】后台管理面板插件
    └── chenliyun-admin.php      # 后台管理界面(文章/相册/作品/简历/首页)

二、核心信息

小程序 AppID wxf7166b58e9a89778(在 project.config.json
生产 API 域名 https://api.xxx.cn
REST 前缀 /wp-json/cl/v1
API 鉴权 X-CL-Key: <32 位 Key>(写接口)
GET 限流 60 次/分钟/IP
写限流 30 次/分钟/IP
插件版本 API v1.3.1 / Admin v5.5.1
数据库 MySQL 5.7+(utf8mb4)
PHP 版本 7.4+(推荐 8.0+)

三、服务器环境要求

3.1 硬件(最低)

角色 配置
生产服务器 1 vCPU / 1 GB RAM / 20 GB SSD(个人项目足够)
操作系统 CentOS 7+ / Ubuntu 20.04+ / Debian 11+ / 宝塔 Linux
域名 1 个(需 ICP 备案 + HTTPS 证书)

3.2 软件栈

Nginx 1.20+ 或 Apache 2.4+
PHP 7.4+(推荐 8.0+)
MySQL 5.7+ 或 MariaDB 10.3+
HTTPS 证书(Let's Encrypt 免费 / 阿里云 / 腾讯云)

3.3 PHP 扩展

扩展 必需 用途
pdo_mysql WordPress 数据库连接
mysqli WordPress 数据库连接
mbstring 字符串处理
openssl HTTPS、密码加密
curl 远程请求
json REST API 序列化
gdimagick 图片缩略图(媒体上传)
zip 插件/主题更新
xml WordPress 核心
fileinfo 文件类型检测
exif - 照片 EXIF 信息(相册推荐)

3.4 PHP 配置(php.ini

upload_max_filesize = 20M
post_max_size = 20M
memory_limit = 256M
max_execution_time = 60
max_input_vars = 3000
date.timezone = Asia/Shanghai

3.5 Nginx 配置参考

server {
    listen 443 ssl http2;
    server_name api.lren.cn;
    root /var/www/wordpress;
    index index.php;
    
    ssl_certificate     /etc/nginx/ssl/lren.cn.pem;
    ssl_certificate_key /etc/nginx/ssl/lren.cn.key;
    
    # 允许上传大文件
    client_max_body_size 20M;
    
    # 静态资源直接由 Nginx 服务
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf)$ {
        expires 30d;
        access_log off;
        add_header Cache-Control "public, max-age=2592000";
    }
    
    # WordPress 伪静态(固定链接)
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    # PHP 处理
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
    # 禁止访问敏感文件
    location ~ /\.(ht|git) { deny all; }
}

微信小程序必须 HTTPSapi.lren.cn 域名需在小程序后台配置「request 合法域名」和「uploadFile 合法域名」。


四、安装步骤

4.1 部署 WordPress

方式 A:宝塔面板(推荐新手)

  1. 宝塔面板 → 软件商店 → 安装 Nginx 1.22PHP 8.0MySQL 5.7
  2. PHP → 设置 → 安装扩展:pdo_mysqlmysqlimbstringopensslcurlfileinfoexifzip
  3. 网站 → 添加站点:
    • 域名:api.xxx.cn
    • 根目录:/www/wwwroot/api.xxx.cn
    • PHP 版本:8.0
    • 数据库:新建一个(记下数据库名/用户名/密码)
  4. SSL → Let's Encrypt → 签发证书 → 强制 HTTPS
  5. 浏览器访问 https://api.xxx.cn,按向导安装 WordPress
    • 数据库信息:填上一步的
    • 站点标题:陈李云的小程序
    • 管理员账号:admin / <强密码>
    • ⚠️ 不要勾选「对搜索引擎可见性」

方式 B:手动 LAMP/LNMP

# CentOS 7 示例
yum install -y nginx php php-fpm php-mysqlnd php-mbstring php-gd php-curl php-xml php-zip
systemctl enable nginx php-fpm mysqld

# 创建数据库
mysql -uroot -e "CREATE DATABASE wp_chenliyun DEFAULT CHARSET utf8mb4;"
mysql -uroot -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'your_strong_pass';"
mysql -uroot -e "GRANT ALL ON wp_chenliyun.* TO 'wpuser'@'localhost';"

# 下载 WordPress
cd /var/www
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
mv wordpress api.lren.cn
chown -R nginx:nginx api.lren.cn

# 浏览器访问完成 wp-config.php

4.2 WordPress 基础配置

进入 WP 后台 → https://api.xxx.cn/wp-admin/

(1) 固定链接(必须设置

设置 → 固定链接 → 自定义结构:/%postname%/ → 保存

不设置会导致 REST API 路由失效

(2) 时区与语言

设置 → 常规:

  • 时区:上海
  • 日期格式:Y-m-d
  • 时间格式:H:i

(3) 媒体设置

设置 → 媒体:

  • 自动裁剪:不勾(避免大文件多份)
  • 缩略图尺寸:宽 600、高 0、中等大小宽 1080

(4) 中文标题/用户名支持(如未生效)

// wp-config.php 添加
define('WPCOM_SITE_ID', '');

4.3 安装 2 个自研插件

插件 1:小程序 API 插件

  1. wp-plugin-api/ 整个目录上传到 wp-content/plugins/,重命名为 chenliyun-api
  2. WP 后台 → 插件 → 启用「小程序 API」
  3. 激活时会自动
    • 创建 9 张自定义表(cl_photo_categories 等)
    • 生成 32 位 API Key 并显示在顶部黄色提示框
  4. 复制 API Key → 后续填到小程序 config.js
  5. 启用 REST API 路由到 /wp-json/cl/v1/*

插件 2:后台管理面板插件

  1. wp-plugin-admin-v5/ 整个目录上传到 wp-content/plugins/chenliyun-admin/
  2. WP 后台 → 插件 → 启用「陈李云小程序控制面板」
  3. 激活后左侧菜单出现「小程序管理」入口
  4. 进入后初始化数据:
    • 分类管理:自动同步 WordPress 原生分类到自定义表
    • 首页配置:填入轮播、卡片、公告、工具栏
    • 简历管理:填入个人简介、经历、技能分组
  5. 如提示「缺少自定义表」→ WP 后台 → 插件 → 停用「小程序 API」→ 重新启用

验证插件安装

# 上传探针文件
scp wordpress-probe.php root@api.lren.cn:/var/www/api.lren.cn/

# 访问探针
curl "https://api.xxx.cn/wordpress-probe.php?token=chenliyun2026" | head -100

探针会返回 JSON:服务器环境、WP 版本、数据库表、插件列表、REST 端点、自定义表是否齐全。

⚠️ 正式上线后删除 wordpress-probe.php(暴露 token 风险)

4.4 配置小程序

(1) 下载微信开发者工具

微信开发者工具 → Stable 版

(2) 导入项目

  1. 开发者工具 → 导入项目
  2. 目录:选择本仓库 miniprogram/
  3. AppID:填 你自己的 AppID(如 wx1234567890abcdef
  4. 项目名称:你的小程序名称

⚠️ 如果只是本地测试原项目,用 wxf7166b58e9a89778;如果要发布自己的小程序,必须用你自己申请的 AppID

(3) 修改 miniprogram/utils/config.js(白标配置)

此文件包含所有可配置项,只需改这一个文件

// ===== 小程序基本信息 =====
const APP_NAME = '你的小程序名称'           // 小程序名称
const AUTHOR_NAME = '你的姓名'             // 作者姓名
const AUTHOR_TITLE = '你的职位'            // 职位头衔
const AUTHOR_TAG = '你的个性签名'           // 个性签名
const AUTHOR_LOCATION = '你的城市'         // 所在地
const DEFAULT_AVATAR = '/images/avatar.jpg'  // 默认头像(放 miniprogram/images/ 下)

// ===== 联系方式(显示在简历页)=====
const AUTHOR_EMAIL = 'your@email.com'
const AUTHOR_PHONE = ''
const AUTHOR_WECHAT = ''
const AUTHOR_HOMETOWN = ''

// ===== 公众号配置 =====
const MP_NAME = '你的公众号名称'            // 公众号名称
const MP_TEXT = '欢迎关注公众号'            // 首页公众号提示文字

// ===== API 配置 =====
const API_KEY = '你的32位APIKey'           // ← 从 WP 后台复制
const PROD_API_HOST = 'https://你的域名'   // ← 你的 WordPress 域名
const PROD_IMG_HOST = 'https://你的域名'   // ← 通常与 API 域名相同

其他配置项(如 THEME_COLORTOOL_ICONS)详见 config.js 注释

(4) 替换图片资源

miniprogram/images/ 下的图片替换为你自己的:

图片 用途 建议尺寸
vajra-bg.jpg 默认头像、Hero 背景 1080×1920 px
tab-home.png / tab-home-active.png 首页 Tab 图标 81×81 px
tab-blog.png / tab-blog-active.png 笔记 Tab 图标 81×81 px
tab-portfolio.png / tab-portfolio-active.png 作品 Tab 图标 81×81 px
tab-gallery.png / tab-gallery-active.png 相册 Tab 图标 81×81 px
doc.png / kefu.png / about.png / attention.png / share.png 工具栏图标 108×108 px

(5) 配置合法域名(生产)

  1. 微信公众平台 → 开发 → 开发管理 → 开发设置
  2. 服务器域名 → request 合法域名:https://api.xxx.cn
  3. 服务器域名 → uploadFile 合法域名:https://api.xxx.cn
  4. 服务器域名 → downloadFile 合法域名:https://api.xxx.cn

不填会报 request:fail url not in domain list

(6) 真机调试前

微信开发者工具 → 详情 → 本地设置:

  • ☑️ 不校验合法域名
  • ☑️ 不校验 TLS 版本

(7) 上传发布

  1. 微信开发者工具 → 点击「上传」→ 版本号 1.0.0 → 上传
  2. 微信公众平台 → 版本管理 → 提交审核
  3. 类目建议选:工具 → 效率
  4. 审核通过后点击「发布」

五、白标部署指南(用自己的 AppID 发布)

如果你想让别人用自己的 AppID 发布这套小程序,只需 5 步:

步骤 1:申请微信小程序

  1. 微信公众平台 → 注册小程序
  2. 选择类目(建议:工具 → 效率 / 教育 → 校园助手)
  3. 记下 AppID(如 wx1234567890abcdef

步骤 2:修改 config.js

打开 miniprogram/utils/config.js,修改以下配置项:

const APP_NAME = '你的小程序名称'
const AUTHOR_NAME = '你的姓名'
const AUTHOR_TITLE = '你的职位'
const AUTHOR_TAG = '你的个性签名'
const AUTHOR_LOCATION = '你的城市'
const DEFAULT_AVATAR = '/images/avatar.jpg'
const AUTHOR_EMAIL = 'chenliyun@88.com'
const MP_NAME = '你的公众号名称'
const MP_TEXT = '欢迎关注公众号'
const API_KEY = '你的32位APIKey'
const PROD_API_HOST = 'https://你的域名'

步骤 3:替换图片

miniprogram/images/ 下的所有图片替换为自己的:

  • 头像 / Tab 图标 / 工具栏图标
  • 建议用 tinypng.com 压缩后再替换

步骤 4:修改 project.config.json

{
  "appid": "wx你的AppID",  // ← 改成你的 AppID
  ...
}

步骤 5:配置域名 + 上传

  1. 微信公众平台 → 开发 → 开发管理 → 服务器域名 → 填你的域名
  2. 微信开发者工具 → 上传 → 版本号 1.0.0
  3. 微信公众平台 → 版本管理 → 提交审核

六、API 端点完整列表

所有端点前缀:https://api.xxx.cn/wp-json/cl/v1

端点 方法 鉴权 用途
/mp/home GET - 首页所有数据(轮播+卡片+工具栏+公告+简历概览)
/mp/articles GET - 笔记列表(支持 ?category=&page=&per_page=
/mp/articles/{id} GET - 笔记详情
/mp/article-categories GET - 笔记分类(带排序/可见性)
/mp/photo-categories GET - 相册分类(带排序/可见性)
/mp/photos GET - 相册照片(支持 ?category_id=&per_page=&page=
/mp/portfolio-categories GET - 作品分类(带排序/可见性)
/mp/resume GET - 简历完整数据(基础信息+经历+技能)
/mp/articles/{id}/comments GET - 笔记评论列表
/mp/articles/{id}/like POST 🔑 点赞(写接口,需 X-CL-Key)
/mp/articles/{id}/comments POST 🔑 提交评论(写接口)

🔑 = 写接口必须带 X-CL-Key header

响应统一格式

{ "code": 0, "msg": "ok", "data": {...} }

code: 0 成功,非 0 失败(msg 含原因)


七、数据库表结构

插件激活时自动创建以下表({prefix} = WP 表前缀,默认 wp_):

表名 用途
{prefix}cl_photo_categories 相册分类(wp_term_id, color, sort_order, visible, slug)
{prefix}cl_photos 相册照片(wp_attachment_id, category_id, location, sort_order, taken_at)
{prefix}cl_portfolio_categories 作品分类(字段同上)
{prefix}cl_portfolio 作品(post_id, cover, summary, content, gallery)
{prefix}cl_resume 简历(基础信息+experiences+skills,存 JSON)
{prefix}cl_home_config 首页配置(key-value 存储:banner / cards / tools / announcement)
{prefix}cl_settings 全局设置(站点名、备案号、联系方式)
{prefix}cl_diaries 日记
{prefix}cl_comments 笔记评论
{prefix}cl_article_categories 笔记分类扩展(颜色、排序、可见性)

表结构管理

  • 升级:插件 cl_api_upgrade_check 自动 dbDelta() 增量补字段
  • 备份:mysqldump -uwpuser -p wp_chenliyun | gzip > backup_$(date +%F).sql.gz
  • 恢复:gunzip < backup.sql.gz | mysql -uwpuser -p wp_chenliyun

八、日常运维

7.1 日志位置

日志 路径
Nginx 访问日志 /var/log/nginx/access.log
Nginx 错误日志 /var/log/nginx/error.log
PHP-FPM 错误日志 /var/log/php-fpm/error.log
WordPress 调试日志 wp-content/debug.log(需 WP_DEBUG_LOG = true
插件探针日志 临时上传 wordpress-probe.php

7.2 启用 WP 调试

// wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);  // 不在前台显示

7.3 备份策略

# 每日自动备份 crontab
0 3 * * * mysqldump -uwpuser -p'pass' wp_chenliyun | gzip > /backup/db_$(date +\%F).sql.gz
0 4 * * * tar -czf /backup/wpfiles_$(date +\%F).tar.gz /var/www/api.lren.cn/wp-content/uploads

7.4 上传最新代码到服务器

# 1. 改完本地代码后
# 2. 上传插件
scp -r wp-plugin-api/chenliyun-api.php root@api.lren.cn:/var/www/api.lren.cn/wp-content/plugins/chenliyun-api/
scp -r wp-plugin-admin-v5/chenliyun-admin.php root@api.lren.cn:/var/www/api.lren.cn/wp-content/plugins/chenliyun-admin/
# 3. 微信开发者工具点「上传」→ 公众平台提交审核

7.5 常见问题

症状 排查
小程序空白 微信开发者工具 Network 看请求 → 看 https://api.xxx.cn 是否 200
url not in domain list 微信公众平台 → 开发设置 → 配置合法域名
403 API Key 无效 小程序 config.jsAPI_KEY 与 WP 后台生成的对不上
429 请求过于频繁 默认 60 次/分钟,超出需等待;可在 cl_api.phpCL_API_RATE_LIMIT_DEFAULT
Error: timeout 检查域名是否可访问、是否 HTTPS、是否勾选「不校验合法域名」
后台菜单不显示 确认是管理员身份登录;插件未启用 → 重新启用
自定义表不存在 WP 后台 → 插件 → 停用「小程序 API」→ 重新启用
固定链接 404 设置 → 固定链接 → /%postname%/;Nginx 配置需含 try_files $uri $uri/ /index.php?$args;
媒体无法上传 检查 wp-content/uploads 目录权限 chown -R nginx:nginx uploads
探针返回 404 探针文件未上传或未在 WP 根目录

九、技术栈与依赖

后端

  • WordPress 6.x(核心)
  • PHP 7.4+(OOP,hook 系统)
  • MySQL 5.7+(自定义表 + 原生 wp_posts / wp_terms)
  • WordPress REST API(自定义 namespace cl/v1

前端

  • 微信小程序原生( uni-app / Taro)
  • 基础库 3.16.1
  • ES6+(async/await、箭头函数、解构)
  • 自定义组件(nav-bar、empty-state)
  • 自定义 tabBar
  • 深色模式(theme.json

设计系统

  • 主色:#2563EB(蓝色)
  • 背景:#F8FAFC(浅灰)
  • 卡片圆角:10px
  • 间距节奏:4/8/12/16/24dp

九、版本记录

日期 改动
2026-07-04 ~ 07-05 后台分类过滤、相册分类修复、显示/隐藏、技能分组、API 端点重写
2026-07-05 14:00 后台技能分组 UI 重构(嵌套结构、组内多技能)
2026-07-05 插件 header 信息统一(Plugin URI: jpgbit,Author URI: lren.cn)

十、联系作者


十一、白标模板配置清单

用别人的 AppID 发布时,只需改以下内容:

文件修改

文件 修改项
miniprogram/utils/config.js 所有配置项(APP_NAME / AUTHOR_NAME / API_KEY / PROD_API_HOST 等)
miniprogram/project.config.json "appid": "wx你的AppID"
miniprogram/images/ 替换所有图片(头像、Tab 图标、工具栏图标)

后端部署

  1. 在你的服务器安装 WordPress + 2 个插件
  2. 从 WP 后台复制 API Key 填入 config.js
  3. 微信公众平台配置你的域名

提交审核

  1. 微信开发者工具导入项目(用你的 AppID)
  2. 上传代码 → 版本号 1.0.0
  3. 微信公众平台提交审核

部署完成后,删除 wordpress-probe.php 以免暴露 token。

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages