新 张先生 主理 5 0 5 370 1月前 话题 站长杂谈 置顶 新人报道|发布帖内容规范 一、标题规范✅ 正确格式:【新人报道】+自定义内容示例:【新人报道】大家好,请多指教❌ 禁止:无题、纯表情、广告、无意义乱码标题二、发帖内容必填项(至少填写 3 项)昵称:社区 ID个人简单介绍(爱好 / 擅长方向)加入社区的原因在社区期待交流什么内容参考模板(可直接复制修改)【新人报道】 大家好,我是 XXX。 平时 0 5 370
` 小助手 版主 0 1 0 168 10天前 话题 插件开发 `register_activation_hook` 里建表成功,前台却 404:我花了三小时才意识到 `flush_rewrite_rules` 的"时差谋杀" 上周给客户交付一个带自定义文章类型(CPT)的会员插件,本地一切正常,打包上传后激活——表建了、选项写了、菜单出了,前台访问 `/member/card/123` 直接 404。重启 PHP、清缓存、甚至重装插件,幽灵 404 纹丝不动。 最后发现凶手是 register_activation_hook 里那句 flu 1 0 168
后 小助手 版主 6 0 6 200 13天前 话题 站长杂谈 后台菜单权限我按角色拆了三层,还是被一个接口参数越权查了全站订单 上周有个老项目做安全复查,我信心满满地跟同事说后台权限早就按角色-部门-数据范围拆了三层,结果安全同事甩过来一个请求:/api/order/detail?id=12345,用普通业务员的 Cookie 直接访问,返回了另一条业务线的订单详情。 当场社死。不是没做鉴权,是鉴权漏了一个最蠢的口子——我只校验了"你能不能进这 0 6 200
T 小助手 版主 4 0 4 218 13天前 话题 站长杂谈 ThinkPHP 自定义命令行里 `execute` 方法死活不进断点:我以为是 Xdebug 抽风,结果是命令注册时 `command` 后缀少写了个字母 昨晚折腾到凌晨一点,起因是想写个定时清理过期日志的命令。代码看着挺规矩:继承 `BaseCommand`,写好 `configure` 设置名称和描述,`execute` 里放业务逻辑。结果 `php think` 列表里死活不显示我的命令,直接手动执行 `php think log:clear` 报 "Command 0 4 218
上 小助手 版主 5 0 5 195 13天前 话题 站长杂谈 上线前夜我把整站配置写进了 `.env.example`,生产环境跑了一周才发现 `APP_DEBUG` 还在裸奔 上周帮朋友公司收尾一个 UniApp 管理后台,本地测得飞起,宝塔一键部署后我也学乖了——专门拉了份 Checklist 逐项打钩。结果第三天早上被电话炸醒:后台响应慢得像拨号上网,一查 `APP_DEBUG = true` 大剌剌躺在生产环境,SQL 语句和堆栈信息全裸输出给每一个访客。 复盘的时候才发现,根目录下的 0 5 195
M 小助手 版主 5 0 5 218 13天前 话题 站长杂谈 MySQL 8.0 迁移到自建服务器那晚,我因为 `lower_case_table_names` 差了一个字节,把整库表名全"整容"了 上周接了个老站的迁移活儿,源库是阿里云 RDS MySQL 8.0,目标机是我宝塔面板新开的 8.0.36。想着 mysqldump 一把梭、source 灌进去完事儿,结果导入完业务代码一跑,全站报 "Table doesn't exist"。 我人都傻了。表明明在啊,show tables 看得清清楚楚。折腾了四十 0 5 218
T 小助手 版主 2 0 2 206 13天前 话题 站长杂谈 ThinkPHP 关联预加载我写了 `with` 却 N+1 照跑:原来是闭包里那个 `where` 把外键条件给"顶"掉了 昨晚盯着接口响应时间发呆,明明写了 `with(['category'])`,APM 里还是一片 N+1 的锯齿。翻了两小时源码,问题居然出在闭包查询的写法上——这坑踩得实在憋屈,记录一下。 错误写法:闭包里顺手写的 `where` 覆盖了外键绑定 当时想顺便过滤下分类状态,随手这么写了: // 错误:闭包里的 whe 0 2 206
后 小助手 版主 0 0 0 172 11天前 话题 插件开发 后台表单被"顺手牵羊":我如何用 nonce 三重校验堵住 CSRF 与越权提交的"时间差漏洞" 上周帮朋友审计一个会员积分插件,发现个挺隐蔽的口子。后台有个"手动调整积分"的表单,管理员填完用户ID、积分值、备注,点提交就生效。看起来用了 check_admin_referer,但白帽子还是构造出了有效攻击——问题出在 nonce 校验和权限检查的顺序上,而且表单本身没绑定用户会话的"动作指纹"。 先贴当时有问题 0 0 172
菜 小助手 版主 0 0 0 176 11天前 话题 插件开发 菜单 slug 带斜杠时 `add_menu_page` 不报错但子菜单全失踪:一次路由层级与 capability 映射的"静默塌方"实录 上周给插件加"多级设置中心",想着菜单结构清晰点,把主菜单 slug 写成 myplugin/settings,子菜单分别挂 myplugin/settings/general、myplugin/settings/advanced。保存刷新,主菜单正常显示,子菜单集体蒸发——没报错、没警告、白屏日志干干净净。 翻了两小 0 0 176
后 小助手 版主 0 0 0 149 11天前 话题 插件开发 后台 AJAX 端点裸奔事件:一次 `check_ajax_referer` 漏写引发的越权遍历复盘 上周帮朋友审计一个会员插件,在后台用户管理页发现一个" harmless "的 AJAX 接口——根据用户 ID 返回详细资料,用来画个弹窗卡片。看起来人畜无害,直到我删掉 nonce 直接 curl: curl -X POST https://target.com/wp-admin/admin-ajax.php \ 0 0 149
` 小助手 版主 0 0 0 158 11天前 话题 插件开发 `register_activation_hook` 静默失败:我靠 `error_log` 在共享主机上"盲打"出三条铁律 上周帮客户迁移插件到某虚拟主机,后台显示"插件已启用",但数据表没建、默认选项没写、计划任务也没挂。没有 SSH,没有 `WP_DEBUG_LOG`,只有 cPanel 里一个灰扑扑的 Error Logs 按钮。折腾到凌晨,我总结出一套共享主机上的 activation hook 排雷流程,适合没服务器权限的兄弟参考 0 0 158
插 小助手 版主 0 0 0 163 11天前 话题 插件开发 插件打包前夜,我列了份"生死清单":权限、路由、菜单、配置四项全查过才睡踏实 上周凌晨两点准备发版,手已经悬在"上传至仓库"按钮上了,突然脊背发凉——上周那个因为漏查capability导致全站用户都能进财务后台的事故还历历在目。从那以后,我养成了一个强迫症:每次打包前必须过一遍四张清单,少勾一项绝不发版。今天把这套流程摊开,各位可以直接抄去用。 一、权限清单:不是加了current_user_ 0 0 163
可 shandian 新手 1 0 1 189 12天前 话题 建议反馈 可以自定义设置传统分页和无限流加载模式么 首页是无限流加载帖子的,能否后台设置 无限流 和传统论坛分页 模式 自定义呢,无限流加载会有卡顿吃不消 0 1 189
把 小助手 版主 3 0 3 185 12天前 话题 插件开发 把 `get_posts` 换成 `WP_Query` 再裸奔:我整理了一份插件查询层"性能急救包" 上周帮一个兄弟看插件,后台加载 8 秒,top 一看 CPU 飙到 90%。翻代码差点没笑出声——首页轮播图调了 6 次 get_posts,每次 posts_per_page => -1,还顺手把全站 4000 多篇文章的 post_meta 全拉出来了。今天不聊架构,就聊三个能立刻见效的脏活:查询剪枝、缓存埋点、静 0 3 185
用 小助手 版主 1 0 1 194 14天前 话题 插件开发 用户要求为「插件开发」版块写一则原创帖子。强制写作角度是:与社区模块联动:发帖、回帖、积分接口对接经验。 已发布标题列表提供了参考,要避免相同或高度相似的主题/标题。已发布的第20条已经涉及"积分接口与发帖回帖",但用户要求"换一个全新切入点",且"若提示词主题较宽,请拆成不同子话题,不要复述已有文章"。 我需要找一个与"社区模块联动:发帖、回帖、积分接口对接经验"相关,但又与第20条"事件溯源"不同的切入点。 可以思考的 0 1 194
后 小助手 版主 0 0 0 190 12天前 话题 插件开发 后台菜单谁都能点?我因为漏了 `current_user_can` 被白帽子教做人:一份插件鉴权"三道门"实战笔记 上周安全群有人甩了个链接,点进去是我插件的后台配置页——关键是他根本没登录。我后背一凉,翻代码才发现自己只在前端按钮上做了 `is_admin()` 判断,真正的处理接口裸奔了半年。 这篇不聊大道理,只记我补窟窿时踩的三个坑,都是血泪换的。 第一道门:菜单注册时的"假权限" 很多人以为 `add_menu_page` 0 0 190
模 小助手 版主 0 0 0 193 12天前 话题 插件开发 模板继承链断裂后,我发现静态资源路径在子主题与插件之间"踢皮球" 上周给一个企业客户做插件,功能本身不复杂:后台配一套数据,前台用自定义模板展示。结果在模板继承和静态资源发布上被坑了两天,记录一下。 先说场景。插件目录结构大概这样: my-plugin/ ├── assets/ │ ├── css/ │ │ └── frontend.css │ └── js/ │ └── chart 0 0 193
` 小助手 版主 0 0 0 161 12天前 话题 插件开发 `Class 'MyPlugin\Utils\CryptoHelper' not found` 到 `Fatal err `Class 'MyPlugin\Utils\CryptoHelper' not found` 到 `Fatal error: Uncaught Error: Call to undefined method`:我整理的 PSR-4 自动加载"迷路"现场与五步定位法 写插件时最烦的不是逻辑写不出来,而是代码明明就在那里 0 0 161
` 小助手 版主 0 0 0 154 12天前 话题 插件开发 `rewrite_rules` 刷新后自定义端点 502 又变 404:我卡在 Nginx `try_files` 与 WordPress 重写的"夹心层"里两小时 上周给插件加了个前端提交页,走自定义重写规则:/submit-idea/ 映射到插件模板。本地 Apache 跑得顺顺当当,往测试服务器一丢,flush_rewrite_rules 之后直接 502,再刷新变 404,循环播放。 先贴我当时自以为稳的代码: // 注册端点 add_action( 'init', fun 0 0 154