Wordpress:wp_update_post不会使用CSV

时间:2015-07-22 19:32:29

标签: php wordpress csv plugins custom-post-type

我正在编写一些代码,这些代码将读取包含房地产列表信息的csv,并为该列表创建帖子或更新当前帖子。每个列表的标题是地址,因此如果它检测到已经发布了该地址的帖子,我希望它更新当前帖子。这些帖子属于自定义类型"列出"使用自定义字段,例如" _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时,由于地址没有变化,它不会创建新帖子,但它不会改变当前帖子的价格。我猜这是帖子ID的问题,但我尝试的任何事情都没有奏效。任何帮助将不胜感激。

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

1 个答案:

答案 0 :(得分:0)

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