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

WordPress通过Ajax更新post_meta关联数组出现admin-ajax.php404错误如何解决

admin-ajax.php返回404错误排查与解决方案

核心问题

你代码中90%的概率是因为ajax路径拼写错误导致的404:在脚本入队的代码中,你传递给admin_url()的参数是admin_ajax.php,而WordPress默认的ajax处理文件名是admin-ajax.php,使用的是中划线而非下划线。

分步排查解决

  • 第一步:修正脚本入队代码的拼写错误
    替换你的入队函数为以下代码:

    function gt21_scripts() {
        wp_register_script( 'cost-rule', get_template_directory_uri() . '/js/cost-rule.js', array( 'jquery' ) );
        wp_enqueue_script( 'cost-rule' );
        // 修正文件名拼写,下划线改为中划线
        wp_localize_script( 'cost-rule', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
    };
    add_action( 'wp_enqueue_scripts', 'gt21_scripts' );
    

    修改后刷新页面测试,绝大多数情况该问题会直接解决。

  • 第二步:验证ajax路径有效性
    如果修改后仍报404,打开浏览器控制台输入console.log(ajax_object.ajaxurl),检查输出的地址是否符合你的站点域名/wp-admin/admin-ajax.php的格式,手动访问该地址如果返回-1则路径正常,否则路径有误。

  • 第三步:排查自定义配置冲突

    • 如果你使用了安全插件修改了默认wp-admin路径、隐藏了后台地址,需要调整代码传入实际的admin-ajax.php路径
    • 检查站点根目录的.htaccess文件,确认伪静态规则没有拦截wp-admin目录下的文件请求,可以临时恢复WordPress默认的.htaccess规则测试。
  • 额外优化建议
    你当前使用遍历的索引$i作为删除定位的标识,当你删除某一个元素后,数组的索引会自动重排,后续删除操作会出现删错元素的问题,建议替换为子数组的唯一标识作为定位依据,不要依赖遍历的临时索引。

内容的提问来源于stack exchange,提问作者Eric Brockman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:27:03