You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:30:20