Wordpress: wp_update_post不会用CSV中的新数据更新帖子


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

我正在编写一些代码,它将读取包含有关房地产列表信息的csv,并为该列表创建帖子或更新当前帖子。每个清单的标题都是地址,因此,如果它检测到一个带有该地址的帖子,我希望它更新当前的帖子。这些帖子的自定义类型为"listing",带有自定义字段,如"_listing_address"(也是post_title)和"_listing_price"等。下面是为新帖子初始化数组或使用数据更新新帖子的代码部分:

$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'],
);

下面是创建新帖子或(应该)更新现有帖子的代码:

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);
}

我可以用我拥有的代码成功创建新帖子,并且它也成功检查另一个帖子是否具有相同的标题,因为它没有创建重复的帖子。但是,它实际上并不更新帖子。因此,如果在我的csv文件中,我将其中一个清单的价格从29,900美元更改为30,000美元,当我重新上传csv时,它不会创建一个新的帖子,因为地址没有更改,但它不会更改当前帖子的价格。我猜这是post ID的问题,但我尝试过的任何东西都不起作用。如有任何帮助,我将不胜感激。

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

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