如何为WordPress后台文章更新/发布按钮添加自定义校验脚本?
检查文章标题/内容特殊字符并阻止保存的可行方案
方法一:前端监听表单提交(替代直接绑定按钮)
后台的Update按钮可能因自动保存等操作动态生成,直接绑定按钮事件容易失效,改用监听表单提交事件更可靠:
jQuery(document).ready(function($) { // 监听文章编辑表单提交 $('#post').on('submit', function(e) { const title = $('#title').val(); const content = $('#content').val(); // 自定义禁止的特殊字符正则,可按需调整规则 const forbiddenPattern = /[`~!@#$%^&*()_+<>?:"{}|,./;'[\]]/; if (forbiddenPattern.test(title)) { alert('标题包含禁止的特殊字符,请修改后重试'); e.preventDefault(); return false; } if (forbiddenPattern.test(content)) { alert('内容包含禁止的特殊字符,请修改后重试'); e.preventDefault(); return false; } }); });
将这段脚本通过后台脚本加载机制(比如admin_enqueue_scripts钩子)添加到文章编辑页面即可,事件委托能覆盖动态生成的按钮元素。
方法二:后端PHP验证(防止前端绕过)
前端验证可被用户禁用JS绕过,因此必须配合后端拦截,利用后台的保存钩子实现:
add_action('save_post', 'block_special_chars_on_save', 10, 3); function block_special_chars_on_save($post_id, $post, $update) { // 跳过自动保存、修订版和非目标文章类型 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if (wp_is_post_revision($post_id)) return; if (!in_array($post->post_type, ['post', 'page'])) return; // 验证当前用户编辑权限 if (!current_user_can('edit_post', $post_id)) return; $title = $_POST['post_title']; $content = $_POST['post_content']; $forbiddenPattern = '/[`~!@#$%^&*()_+<>?:"{}|,./;\'[\]]/'; if (preg_match($forbiddenPattern, $title)) { wp_die('标题包含禁止的特殊字符,请返回修改!'); } if (preg_match($forbiddenPattern, $content)) { wp_die('内容包含禁止的特殊字符,请返回修改!'); } }
这段代码添加到主题functions.php或自定义插件中,会在文章保存前强制验证,从根源阻止违规内容提交。
最佳实践
建议同时使用前后端验证:前端给用户即时反馈,提升操作体验;后端做最终拦截,保障数据安全。
内容的提问来源于stack exchange,提问作者Susnata Dutta
相关产品推荐
相关产品推荐

