avatar
文章
649
标签
2112
分类
180

开发
  • 大前端
  • 人工智能
  • 小程序
  • 桌面应用
  • 游戏开发
服务器&网络
  • 服务器
  • 网络
归档
标签
友链
联系我们
仰观苍穹思环宇
开发
  • 大前端
  • 人工智能
  • 小程序
  • 桌面应用
  • 游戏开发
服务器&网络
  • 服务器
  • 网络
归档
标签
友链
联系我们

基于WordPress的deepseek自动生成插件实战:支持CSV导入、随机创作与节奏控制的完整开发指南(从表格到博客一键生成!支持随机写作与定时生成的WordPress AI自动内容)

发表于2025-06-30|更新于2026-09-12|wordpress
WordPress 插件开发DeepSeek API 内容生成CSV 批量导入与发布随机文章生成逻辑自动化内容创作工具auto-create-content-byai
cover of previous post
上一篇
基于滚动交互的动态元素倾斜效果:使用JavaScript实现丝滑过渡和精确控制(如何通过JavaScript实现丝滑的滚动动态倾斜效果:优化视差交互体验)
cover of next post
下一篇
从WordPress开发者到现代Web架构专家:一个以项目为核心的进阶成长路径(告别舒适圈:一个WordPress从业者的自我升级与认知跃迁之路)
相关推荐
cover
2025-06-24
构建可配置黑名单过滤与自定义类型推荐的WordPress插件:自动特色图像与智能内容推荐系统(自动展示相关内容的WordPress插件支持关键词过滤、自定义类型推荐与响应式幻灯片布局)
avatar
鸢尾花序
文章
649
标签
2112
分类
180
联系我们
目录
  1. 1. 引言:
  2. 2. 第一步:插件目录结构设计
  3. 3. 第二步:auto-create-content-byai.php 插件主文件(入口文件)
  4. 4. 第三步:admin/settings-page.php —— 设置页面布局逻辑
  5. 5. 第四步:admin/settings-fields.php —— 设置字段定义与处理
  6. 6. 第五步:admin/scheduler.php —— 定时任务注册与调度
  7. 7. 第六步:includes/content-creator.php —— 内容创建核心逻辑
  8. 8. 说明
  9. 9. 第七步:includes/ai-content-generator.php —— AI 内容生成逻辑
  10. 10. 模块说明:
  11. 11. 第八步:includes/image-handler.php —— 特色图自动处理逻辑
  12. 12. 模块说明:
  13. 13. 第九步:includes/logger.php —— 日志记录与显示模块
  14. 14. 模块说明:
  15. 15. 第十步:assets/js/admin-script.js —— 后台 JS 脚本逻辑
  16. 16. 后台日志刷新配套:ajax 回调函数添加到 includes/logger.php
  17. 17. 模块说明:
  18. 18. 第十一步:assets/css/admin-style.css —— 设置页样式
  19. 19. 如何使用:
  20. 20. 下一步建议(可选):
  21. 21. 一、templates/settings-page-template.php
  22. 22. 二、uninstall.php
  23. 23. 三、includes/helper.php
  24. 24. 总结
  25. 25. 1. 开启 WordPress 调试模式,查看详细错误信息
  26. 26. 2. 常见错误及排查方向
  27. 27. 3. 重点检查你代码里几个关键点
  28. 28. 4. 简单快速定位方法
  29. 29. 5. 如果方便,可以把 debug.log 里面的具体错误信息发给我,我帮你具体定位。
  30. 30. 解决方案
  31. 31. 具体操作建议
  32. 32. 例如,helper.php 头部示例:
  33. 33. 总结
  34. 34. ✅ 如何查看当前日志记录创建的具体类型?
  35. 35. ✅ 正确做法:增强日志内容,显示类型
  36. 36. ✅ 你可以这样修改:
  37. 37. ✅ 附加建议:过滤掉无用 post type(如 attachment)
  38. 38. 最终效果
  39. 39. ✅ 你看到日志写的是“创建成功”,但没有看到任何内容被创建。这种情况可能是假成功,也可能是创建到了不被注意的类型中。
  40. 40. 🔍 1. 确认创建的 post type 是否是你关注的类型
  41. 41. 🔍 2. 确认 post 是否处于“已发布”状态
  42. 42. 🔍 3. 确认是否成功创建了 portfolio 类型
  43. 43. 🔍 4. WooCommerce product 创建成功但未显示?
  44. 44. 🔧 最终建议:修复 post_type 随机来源
  45. 45. ✅ 总结排查建议
  46. 46. ✅ 目标
  • ✅ 第一部分:content-creator.php
    1. 0.1. 🔧 函数:accbyai_random_generate_once()
  • ✅ 第二部分:accbyai_insert_post() 是否正确插入?
    1. 0.1. 📌 问题点:
  • ✅ 第三部分:是否正确设置特色图?
  • ✅ 第四部分:portfolio 类型是否存在?
  • ✅ 最终建议:改进日志、强制输出 post_id
  • ✅ 结论
    1. 1. ✅ 改进后的代码(含 HTML+CSS,美观展示)
    2. 2. ✅ 效果说明:
    3. 3. 🔄 示例输出:
    4. 4. ✅ 问题分析
    5. 5. ✅ 解决方案:将 Markdown 转换为 HTML 后再保存
      1. 5.1. ✅ 方法一:使用现成的 Markdown 解析库(推荐)
        1. 5.1.1. 步骤:
      2. 5.2. ✅ 方法二:让 AI 直接输出 HTML 内容(不推荐)
    6. 6. ✅ 推荐使用方式:方法一 + Parsedown(稳定、安全、结构清晰)
    7. 7. 📦 如果你希望,我可以:
    8. 8. ✅ 改进点:
    9. 9. ✅ 前提:请确保你已在插件中加入 Parsedown.php
    10. 10. ✅ 完整函数:改进后的 accbyai_generate_ai_content()
    11. 11. ✅ 你还需要的依赖文件:
    12. 12. ✅ 成果效果:
    13. 13. ✅ 目标
    14. 14. ✅ 正确处理方式
    15. 15. ✅ 建议加日志确认分布
    16. 16. ✅ 补充提醒:确保其他类型真的注册了
    17. 17. ✅ 总结
    18. 18. ✅ 改进内容
    19. 19. ✅ 修改后的完整函数
    20. 20. ✅ 效果说明
    21. 21. ✅ 要实现的目标
    22. 22. ✅ 步骤一:在设置项中注册新字段
      1. 22.1. 🔧 添加字段注册:
    23. 23. ✅ 步骤二:定义渲染函数 accbyai_render_post_type_checkbox()
    24. 24. ✅ 步骤三:更新 accbyai_random_generate_once() 逻辑,使用后台设置值
    25. 25. ✅ 后台显示效果
    26. 26. ✅ 默认值建议
    27. 27. 修复方案
    28. 28. 修复后的完整函数 accbyai_render_post_type_checkbox() 部分:
    29. 29. 解决方案:
    30. 30. 修改 accbyai_sanitize_settings 函数,示例代码如下:
    31. 31. 重点
    32. 32. 1. 重置生成计数器
    33. 33. 2. 确认定时任务是否启动
    34. 34. 3. 手动触发测试
    35. 35. 4. 检查日志函数和写入
    36. 36. 5. 提示
    37. 37. 总结
    38. 38. 在后台设置页添加“重置随机生成计数”按钮
    39. 39. 1. 在 admin/settings-fields.php 中添加按钮渲染函数
    40. 40. 2. 在 accbyai_register_settings() 里注册这个新字段
    41. 41. 3. 在 admin/settings-page.php 或合适的后台页面处理提交请求
    42. 42. 4. 整合示例(关键部分)
    43. 43. 说明
    44. 44. 1. 确认 add_settings_field 放置正确
    45. 45. 2. 确认 add_settings_section 和 do_settings_sections() 绑定
    46. 46. 3. 调整示例代码
    47. 47. 4. 设置页模板调用示例(通常在 admin/settings-page.php)
    48. 48. 总结
    49. 49. 具体调整建议
      1. 49.1. 1. 统一页面和区块名
      2. 49.2. 2. 确认后台页面渲染时调用
    50. 50. 修改后示例部分代码(settings-fields.php):
    51. 51. 其他补充
    52. 52. 总结
    53. 53. 解决方案
    54. 54. 推荐做法
    55. 55. 这样做的好处
    56. 56. ✅ 第一步:在 admin/settings-fields.php 添加重置按钮字段函数
    57. 57. ✅ 第二步:在 accbyai_register_settings() 中注册字段
    58. 58. ✅ 第三步:在插件主文件(如 auto-create-content-byai.php)中添加处理逻辑
    59. 59. ✅ 第四步:在后台设置页面显示重置成功提示
    60. 60. 🔄 最终效果
    61. 61. 🧨 问题定位
    62. 62. ✅ 正确做法:删除上面的直接处理代码
    63. 63. ✅ 保留 重置按钮 HTML 部分(没问题)
    64. 64. ✅ 把表单处理逻辑放到插件主文件中(或任何后台已加载的 Hook)
    65. 65. ✅ 在后台页面显示成功提示
    66. 66. ✅ 最终你需要的文件结构确认
    67. 67. 🎯 目标明确:
    68. 68. ✅ 修改插件主文件里的处理函数
    69. 69. ✅ 附加:确认日志表结构匹配
    70. 70. ✅ 确保成功提示显示出来
    71. 71. 🔚 总结
    72. 72. ✅ 目标:
    73. 73. 🚨 原因分析:
    74. 74. ✅ 正确做法:在设置页模板 settings-page.php 中确保如下表单结构
    75. 75. ✅ 但这还不够
    76. 76. ✅ 添加手动保存逻辑(避免用 options.php)
    77. 77. ✅ 最终你会有两个 form
    78. 78. 🔍 总结:修复结果
    79. 79. 🧪 问题诊断:点击“重置”后日志仍存在,说明 删除日志失败,而无法继续创建内容,则是 accbyai_random_created 计数没有被正确重置或逻辑没判断生效
    80. 80. ✅ 修复方式:请检查主插件文件中 accbyai_handle_reset_random() 是否如下:
    81. 81. ✅ 检查日志表是否正确命名
    82. 82. ✅ 检查是否判断已完成而不执行生成
    83. 83. ✅ 建议:额外日志记录一条 重置执行完毕
    84. 84. ✅ 整体排查顺序
    85. 85. 💡 提示:是否开启了 enable_random
    86. 86. ✅ 解决方法:添加日志表创建函数并在插件激活时执行
    87. 87. ✳️ 第一步:在 includes/helper.php 或新建 includes/installer.php 中添加函数
    88. 88. ✳️ 第二步:在插件主文件 auto-create-content-byai.php 添加激活钩子
    89. 89. ✳️ 第三步:强制触发一次插件激活
    90. 90. ✳️ 第四步:验证表是否创建成功
    91. 91. ✳️ 第五步:重试点击“重置计数器”
    92. 92. ✅ 补充建议(可选)
    93. 93. ✅ 当前你的代码结构如下(问题点)
    94. 94. ✅ 解决方案:合并成一个激活处理函数
    95. 95. ✅ 同样地,如果你有 deactivation 钩子,也建议统一:
    96. 96. ✅ 总结建议
    97. 97. ✅ 最佳做法:在 ACCBYAI_Scheduler::activate() 内部调用 accbyai_create_log_table()
    98. 98. ✳️ 修改建议(关键)
      1. 98.1. 修改 includes/scheduler.php 中的 activate() 方法:
    99. 99. ✅ 这样带来的好处:
    100. 100. ✅ 补充建议
    101. 101. ✅ 修改后的 scheduler.php 建议如下:
    102. 102. ✅ 注意事项
    103. 103. ✅ 表创建函数(确保已定义)
    104. 104. 解决方案:
    105. 105. 你可以选择:
    106. 106. 具体分析
    107. 107. 修改建议
    108. 108. 你可能需要修改的示例代码片段
    109. 109. 总结
    110. 110. 修改建议
    111. 111. Auto Create Content by AI 插件操作指引
      1. 111.1. 一、插件简介
      2. 111.2. 二、初始化步骤
      3. 111.3. 三、重置计数器及日志
      4. 111.4. 四、随机生成内容功能
      5. 111.5. 五、其他说明
    112. 112. 结语
    113. 113. Auto Create Content by AI 插件后期升级方向建议
      1. 113.1. 1. 多数据源支持
      2. 113.2. 2. AI 内容生成增强
      3. 113.3. 3. 生成内容管理优化
      4. 113.4. 4. 定时任务和触发机制
      5. 113.5. 5. 用户交互体验改进
      6. 113.6. 6. 内容生成多样化
      7. 113.7. 7. 权限和安全增强
      8. 113.8. 8. 性能和扩展性
    114. 114. ✅ 1. 修改 accbyai_display_logs() 实现分页(支持 Bootstrap)
    115. 115. ✅ 2. 修改 AJAX 回调支持分页参数
    116. 116. ✅ 3. 加载 Bootstrap + 添加 JS 脚本
    117. 117. ✅ 4. 结构参考
    118. 118. 1. 修改 accbyai_display_logs 支持每页数量和上下页按钮
    119. 119. 2. 修改 AJAX 回调支持传递每页数量参数
    120. 120. 3. 修改前端 HTML 添加每页显示数量选择框
    121. 121. 4. 修改 JS 逻辑支持每页显示条数和分页按钮
    122. 122. 1. 防止随机生成重复内容,标题更复杂
    123. 123. 2. 插件卸载时保留特定设置项
      1. 123.1. 方案:卸载时只删除其它配置,保留这些键
    124. 124. 总结
    125. 125. 1. 保证处理函数正确绑定
    126. 126. 2. 处理函数示例(你给的基础上稍微完整)
    127. 127. 3. 表单代码保持不变
    128. 128. 4. 你可以在管理页页面用 $_GET['accbyai_reset'] 检测是否重置成功,然后给出提示。
    129. 129. 1. 表单提交地址和 action 名称匹配
    130. 130. 2. 权限和 nonce 检查是否通过
    131. 131. 3. 函数 accbyai_log() 需在重置函数之前加载
    132. 132. 4. 检查表前缀
    133. 133. 5. 请求是否被正确触发
    134. 134. 6. 设置页反馈提示(可选)
    135. 135. 7. 兼容插件卸载
    136. 136. 结论
    137. 137. 实现说明
    138. 138. 1. PHP - 注册 Ajax 处理接口
    139. 139. 2. PHP - 给后台页面加载 JS 时,传递 Ajax URL 和 nonce
    140. 140. 3. PHP - 替换设置页中重置计数器按钮,改成普通按钮
    141. 141. 4. JS - 在 assets/js/admin-script.js 添加 Ajax 请求和确认逻辑
    142. 142. 总结
    143. 143. 后台 Bootstrap 美化样式示例 CSS
    144. 144. 使用示例
    145. 145. 额外建议
    146. 146. ✅ 修改后完整代码
    147. 147. ✅ 函数:accbyai_generate_ai_title()
    148. 148. ✳️ 放置建议
    149. 149. 💡注意事项
    150. 150. ✅ 正确做法:移除类型标记
    151. 151. ✅ 如果你之前调用了类似:
    152. 152. 🎯 目标
    153. 153. ✅ 修改建议(重点代码)
    154. 154. ✅ 修复策略
    155. 155. ✅ 应用方式
    156. 156. ✅ 最终效果示例
    157. 157. ✅ 优化目标
    158. 158. ✅ 修改建议代码(按文件分组)
      1. 158.1. 🔧 includes/ai-content-generator.php 中添加:
      2. 158.2. 🔧 同文件中添加主函数:accbyai_generate_random_title_ai_first
      3. 158.3. 🔧 includes/content-creator.php 中的 accbyai_random_generate_once() 保持如下即可(你已经集成得很好了):
    159. 159. ✅ 效果示例
    160. 160. ✅ 最终整合后的函数如下:
    161. 161. ✅ 同时保留辅助函数:
    162. 162. ✅ 可删除的原函数(已合并)
    163. 163. ✅ 目标调整
    164. 164. ✅ 修改后的函数代码如下:
      1. 164.1. accbyai_generate_random_title_ai_first
      2. 164.2. accbyai_fallback_random_title(已优化去掉 (type))
    165. 165. ✅ 整合优化版代码如下:
      1. 165.1. 1. accbyai_generate_random_title_ai_first() 主逻辑(只保留调用)
      2. 165.2. 2. accbyai_fallback_random_title() 保持不变,只去除类型后缀
    166. 166. ✅ 补充建议:accbyai_extract_one_title() 示例(保持清洁标题提取)
    167. 167. ✅ 整体逻辑总结:
    168. 168. ✅ 修改后的 accbyai_extract_one_title() 函数:
    169. 169. ✅ 改动说明:
    170. 170. ✅ 最佳实践:优化 accbyai_extract_one_title() 函数
    171. 171. ✅ 示例前后对比:
    172. 172. ✅ 升级后的 accbyai_extract_one_title():
    173. 173. ✅ 支持处理的示例
    174. 174. 文件名建议
    175. 175. 文件内容(已封装、独立执行、可删除即可禁用此功能)
    176. 176. 使用说明
    177. 177. ✅ 点击路径:
    178. 178. 示例页面地址:
    179. 179. ✅ 正确做法
    180. 180. ✅ 修改方法如下
    181. 181. ✅ 正确访问方式:
    182. 182. ✅ 结果
    183. 183. ✅ 补充建议(可选)
    184. 184. ✅ 调整目标
    185. 185. ✅ 修改 1:manual-excel-importer.php(去除菜单注册)
    186. 186. ✅ 修改 2:settings-page.php 适配标签显示
    187. 187. ✅ 修改 3:includes/manual-excel-importer.php 中注册渲染钩子
    188. 188. ✅ 最终访问入口
    189. 189. ✅ 修改后的 admin/settings-page.php
    190. 190. ✅ 配合说明
    191. 191. ✅ 修复方案
    192. 192. ✅ 建议修改内容如下
    193. 193. ✅ 效果说明
    194. 194. ✅ 修复方式
      1. 194.1. 步骤如下:
    195. 195. 1. 在 admin/settings-fields.php 中添加以下字段注册
    196. 196. 2. 注册字段的回调函数
    197. 197. ✅ 也可以简化选择方案:
    198. 198. ✅ 修改 manual-excel-importer.php 表单中的读取逻辑:
    199. 199. ✅ 最终建议
    200. 200. ✅ 问题 1:fgetcsv() 的 $escape 参数警告
    201. 201. ✅ 问题 2:AI 内容生成请求失败(wp_remote_post() 中 $body = false)
    202. 202. 🛠 解决方式:
      1. 202.1. 1. 添加空判断(ai-content-generator.php)
    203. 203. ✅ 汇总修改建议
      1. 203.1. 修改 manual-excel-importer.php 中:
      2. 203.2. 修改 ai-content-generator.php 中的 $body 部分:
      3. 203.3. 在调用 accbyai_generate_ai_content() 的地方添加:
    204. 204. ✅ includes/manual-excel-importer.php 修复版
    205. 205. ✅ 问题定位
    206. 206. ✅ 修复方法
    207. 207. ✅ 可选增强:确保 json_encode() 不会失败的建议
    208. 208. ✅ 总结
    209. 209. ✅ 修复后的完整函数
    210. 210. ✅ 问题 1:fgetcsv() 报 Deprecated 警告
    211. 211. ✅ 问题 2:wp_remote_post() 报 boolean 类型错误
    212. 212. ✅ 修复方式
    213. 213. ✅ 建议添加错误追踪日志(可选)
    214. 214. ✅ 最终建议
      1. 214.1. 1. includes/content-creator.php
      2. 214.2. 2. includes/ai-content-generator.php 中的 wp_remote_post 调用逻辑
    215. 215. ✅ 问题 1:wp_remote_post() 报错
    216. 216. ✅ 问题 1 修复方案(完整函数)
    217. 217. ✅ 问题 2:fgetcsv() 报 Deprecated
    218. 218. 🔁 最后建议
    219. 219. ✅ 完整修复代码:includes/manual-excel-importer.php
    220. 220. ❗当前问题:提示「表格下载失败或无效」
    221. 221. ✅ 检查点 1:确认你有 accbyai_download_csv_to_tmp() 函数
    222. 222. ✅ 检查点 2:确认 CSV URL 是否能从你的服务器访问
    223. 223. ✅ 检查点 3:服务器是否阻止下载非本域文件
    224. 224. ✅ 最佳调试建议
    225. 225. ✅ 总结
    226. 226. ❗核心问题:标题已存在或格式解析失败
    227. 227. ✅ 1. 检查标题是否已存在
    228. 228. ✅ 2. 检查 CSV 表头解析是否正常
    229. 229. ✅ 3. 记录日志查看解析结果
    230. 230. ✅ 4. 检查 post_type 是否注册
    231. 231. ✅ 示例测试建议
    232. 232. ✅ 最佳实践:加入日志记录每一条尝试
    233. 233. ✅ 结论与建议
    234. 234. ✅ 最终问题根因:CSV 文件编码格式 + 首行 BOM(Byte Order Mark)
    235. 235. 🔍 问题表现细节:
    236. 236. ✅ 最终解决方案:
    237. 237. 🧠 总结教训:
    238. 238. ✅ 需要修复的关键点
      1. 238.1. 1. 处理 CSV 文件第一行可能含有 BOM 的情况
    239. 239. 🔁 可选优化建议(增强容错和日志)
      1. 239.1. 2. 增加日志记录原始表头内容,便于排查字段匹配失败问题
      2. 239.2. 3. 给 CSV 数据导入添加总行数与跳过行数统计
    240. 240. 🧪 最终检查
    241. 241. ✅ 修复后小结
    242. 242. ✅ 新增功能说明:
    243. 243. ✅ 完整强化后的代码如下:
    244. 244. ✅ 使用方式提醒:
    245. 245. 🔍 常见原因
    246. 246. ✅ 解决方案
      1. 246.1. ✅ 1. 增加超时时间
      2. 246.2. ✅ 2. 添加重试机制(可选增强)
      3. 246.3. ✅ 3. 减慢请求频率
      4. 246.4. ✅ 4. 检查 API 返回是否有效
    247. 247. 🧪 附建议调试方式
    248. 248. ✅ 建议总结
    249. 249. ✅ 功能实现无误
    250. 250. 🧠 可优化建议
      1. 250.1. 1. 超时重试机制建议引入
      2. 250.2. 2. 建议记录每一条的原始分类字段
      3. 250.3. 3. 字段匹配强健性提升
      4. 250.4. 4. 建议加入日志摘要头部
    251. 251. ✅ 结论
    252. 252. 🔧 优化后的完整代码
    253. 253. 🔄 推荐的后续升级方向
  • 最新文章
    Hexo静态博客添加联系表单:用Google Apps Script实现邮件直达
    Hexo静态博客添加联系表单:用Google Apps Script实现邮件直达2026-09-17
    白手起家没有资源的人如何通过资源整合一步步突破认知并打通合作路径的完整分析
    白手起家没有资源的人如何通过资源整合一步步突破认知并打通合作路径的完整分析2026-09-15
    独立站定位四步法服务谁、解决什么、凭什么是你、怎么赚钱——WordPress独立站从模糊定位到清晰战略的完整框架
    独立站定位四步法服务谁、解决什么、凭什么是你、怎么赚钱——WordPress独立站从模糊定位到清晰战略的完整框架2026-09-15
    Duplicator全量迁移WordPress后HTTPS挂了正确做法是只换wp-content并在duplicator部署网站的时候1Panel里把数据库host填成mysql而不是localhost
    Duplicator全量迁移WordPress后HTTPS挂了正确做法是只换wp-content并在duplicator部署网站的时候1Panel里把数据库host填成mysql而不是localhost2026-09-15
    多设备Hexo安装Butterfly主题里面博客search.xml过大导致GitHub推送失败的完整解决方案(含交互式清理脚本)
    多设备Hexo安装Butterfly主题里面博客search.xml过大导致GitHub推送失败的完整解决方案(含交互式清理脚本)2026-09-14
    告别逐个转换用md2pdf一键批量把Markdown变成PDF
    告别逐个转换用md2pdf一键批量把Markdown变成PDF2026-09-14
    Hexo+Butterfly主题search.xml过大导致GitHub推送失败之完整排查与解决SOP
    Hexo+Butterfly主题search.xml过大导致GitHub推送失败之完整排查与解决SOP2026-09-14
    用Python批量给Hexo文章自动补齐TDK:DeepSeek驱动、严格YAML、动态备份的完整实践
    用Python批量给Hexo文章自动补齐TDK:DeepSeek驱动、严格YAML、动态备份的完整实践2026-09-12
    ©2022 - 2026 By 鸢尾花序