Wordpress:wp_update_post 不会使用来自 CSV 的新数据更新 post

Wordpress: wp_update_post doesn't update the post with new data from a CSV

我正在编写一些代码来读取包含有关房地产列表信息的 csv,然后为该列表创建 post 或更新当前的 post。每个列表的标题都是地址,因此如果它检测到 post 已经创建了该地址,我希望它更新当前的 post。 post 是自定义类型 "listing",带有自定义字段,例如“_listing_address”(也是 post_title)和“_listing_price”等。这里是为新 post 初始化数组或使用数据更新新 post:

的代码部分
$new_post = array(
        'post_title'   => convert_chars($data['csv_post_title']),
        'post_content' => wpautop(convert_chars($data['csv_post_post'])),
        'post_status'  => $opt_draft,
        'post_type'    => $type,
        'post_date'    => $this->parse_date($data['csv_post_date']),
        'post_excerpt' => convert_chars($data['csv_post_excerpt']),
        'post_name'    => $data['csv_post_slug'],
        'post_author'  => $this->get_auth_id($data['csv_post_author']),
        'tax_input'    => $this->get_taxonomies($data),
        'post_parent'  => $data['csv_post_parent'],
);

这里是创建新 post 或(应该)更新现有 post 的代码:

if (!get_page_by_title( $new_post['post_title'], 'OBJECT', 'listing')) {
    $id = wp_insert_post($new_post);
} else {
    $old_post = get_page_by_title( $new_post['post_title'], 'OBJECT', 'listing' );
    $new_post['ID'] = $old_post->ID;
    $id = wp_update_post($new_post);
}

我可以使用我拥有的代码成功创建新的 post,它还可以成功检查另一个 post 是否具有相同的标题,因为它不会创建重复的 [=30] =]秒。但是,它实际上并没有更新 post。因此,如果在我的 csv 文件中,我将其中一个列表的价格从 29,900 美元更改为 30,000 美元,当我 re-upload csv 时,它不会创建新的 post,因为地址没有改变,但它不会改变当前 post 的价格。我猜这是 post ID 的问题,但我尝试过的任何方法都没有用。任何帮助将不胜感激。

其他相关信息:
我正在使用 Wordpress 的 CSV Importer 插件,我用上面的代码修改了它以检查重复的 posts 并更新它们。我还使用了 Genesis 框架和 Agentpress 主题,它们创建了列表自定义类型。

我明白了。问题是我在上面创建数组的代码没有处理任何自定义字段 - 这些由稍后调用的另一个函数处理,该函数使用 Wordpress 的 create_post_meta() 函数来创建自定义字段。显然这对我来说是个问题,因为我试图更新已经创建的 post 元字段。我所要做的就是将其切换到 update_post_meta(),这两个更新都已经创建了 post 元,如果还没有,则创建一个新元。希望这对正在使用 CSV 导入器或已经制作了自己的 CSV 上传插件并且正在努力从 CSV 文件创建和更新 posts 的任何人有所帮助。