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

使用wp_delete_post删文章时出现Rank Math数据库错误的解决办法

问题:批量删除特定Meta字段文章时出现Rank Math数据库错误

我通过以下代码批量删除所有带有meta_key = xxx_generate_id的文章:

$arg = array(
        'numberposts' => -1,    // The number of posts to retrieve, otherwise 5
        'post_type'   => $publish_as,
        'post_status' => $post_status,
        'meta_key' => 'xxx_generate_id',
    );
$quesryResults = new WP_Query($arg);
    $success = 0;
    $failed = 0;
if ($quesryResults->have_posts()) {
        while ($quesryResults->have_posts()) {
            $quesryResults->the_post();
            if (wp_delete_post(get_the_ID(), true)) {
                $successs++;
            } else {
                $failed++;
            }
        }
        
    }

目标文章已成功删除,但同时触发了Rank Math插件的数据库错误,错误信息如下:

WordPress database error: [Unknown column '0' in 'field list']
UPDATE `wp_rank_math_internal_meta` SET `internal_link_count` = '0', `external_link_count` = '0', `0` = '' WHERE `object_id` = 661

WordPress database error: [Unknown column '0' in 'field list']
UPDATE `wp_rank_math_internal_meta` SET `internal_link_count` = '0', `external_link_count` = '0', `0` = '' WHERE `object_id` = 660

WordPress database error: [Unknown column '0' in 'field list']
UPDATE `wp_rank_math_internal_meta` SET `internal_link_count` = '0', `external_link_count` = '0', `0` = '' WHERE `object_id` = 652

请问如何解决或隐藏该错误?


一、修复根源问题(推荐)

该错误是Rank Math在处理文章删除事件时,内部生成的SQL语句存在逻辑错误(错误将0作为字段名执行更新操作),可按以下步骤处理:

  • 更新Rank Math到最新版本
    插件开发者大概率已修复此类BUG,先检查并升级Rank Math至官方最新版本,再重新执行删除操作验证问题是否解决。

  • 临时禁用Rank Math链接统计功能
    删除文章前,暂时关闭Rank Math的链接统计模块:

    1. 进入WordPress后台 → Rank Math → 仪表盘 → 链接统计
    2. 关闭内部/外部链接统计相关选项
    3. 执行删除代码完成后,重新开启该功能
  • 手动清理Rank Math残留数据
    若更新插件后问题仍存在,可直接清理wp_rank_math_internal_meta表中对应已删除文章的记录:

    DELETE FROM wp_rank_math_internal_meta WHERE object_id IN (661,660,652);
    

    注意替换表前缀wp_为你的实际数据库前缀,以及对应的文章ID列表。

二、临时隐藏错误提示(仅应急使用)

如果只是不想看到错误输出,可在执行删除代码前后临时关闭WordPress的数据库错误显示:

// 临时关闭数据库错误显示
$wpdb->hide_errors();

// 你的删除代码(已修正拼写错误:successs → success)
$arg = array(
        'numberposts' => -1,
        'post_type'   => $publish_as,
        'post_status' => $post_status,
        'meta_key' => 'xxx_generate_id',
    );
$quesryResults = new WP_Query($arg);
$success = 0;
$failed = 0;
if ($quesryResults->have_posts()) {
    while ($quesryResults->have_posts()) {
        $quesryResults->the_post();
        if (wp_delete_post(get_the_ID(), true)) {
            $success++;
        } else {
            $failed++;
        }
    }
}

// 恢复错误显示
$wpdb->show_errors();

注意:原代码中存在拼写错误$successs++,需改为$success++才能正确统计成功删除的文章数量。


内容的提问来源于stack exchange,提问作者Herahadi An

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:57:17