导入工具的具体功能是什么?

时间:2013-09-09 作者:RubenGeert

我对导入工具进行了一些尝试,它似乎可以为不同的表执行不同的操作。

对于posts: 如果是一篇文章(或页面,从技术上讲也是一篇文章)title 从数据库中已存在的导入文件中won\'t 被导入。本例中的Wordpress界面将指示“已经存在…”。

对于postmeta: 将添加导入数据库中的所有行。无论该信息是否已经存在->都会导致数据库膨胀。

我想知道其他桌子会发生什么。行是否为overwritten, added (如中所示postmeta) 或refused (如中所示posts) 如果他们已经在场?

“已经存在”在这里是如何定义的(post_id? term_id? name)?

1 个回复
最合适的回答,由SO网友:Charles Clarkson 整理而成

这里“已经存在”是如何定义的(post_id? term_id? name)?

帖子标题和日期必须匹配才能已存在。

WordPresspost_exists() 函数用于确定post是否存在。

从插件代码:

$post_exists = post_exists( $post[\'post_title\'], \'\', $post[\'post_date\'] );
未提供用于更改此行为的筛选器。


用于posts: 如果是一篇文章(或页面,从技术上讲也是一篇文章)title 从数据库中已存在的导入文件中won\'t 被导入。本例中的WordPress界面将指示“已经存在…”。

不仅仅是\'post\'\'page\' 可以导入帖子类型。可以导入任何定义的职位类型。例如\'nav_menu_item\' 在导入代码中的处理方式不同:

if ( \'nav_menu_item\' == $post[\'post_type\'] ) {
    $this->process_menu_item( $post );
    [...]
如果出现以下情况,导入不会创建新帖子:

1。帖子类型不存在,
2。给定的post ID已标记为已导入或
3。具有相同标题和日期的帖子已存在

标记为具有父级的帖子在数据库中不存在,这些帖子将成为顶级项目。这可能是暂时的,因为父项可能尚未导入。


用于postmeta: 将添加导入数据库中的所有行。无论该信息是否已经存在->都会导致数据库膨胀。

对于已经存在的帖子,只有当标题和日期相同的帖子已经存在时(上文第3条),才会导入新的/更新的帖子术语、评论和元数据。

添加post meta的插件代码如下:

if ( ! isset( $post[\'postmeta\'] ) )
    $post[\'postmeta\'] = array();

$post[\'postmeta\'] = apply_filters( \'wp_import_post_meta\', $post[\'postmeta\'], $post_id, $post );

// add/update post meta
if ( ! empty( $post[\'postmeta\'] ) ) {
    foreach ( $post[\'postmeta\'] as $meta ) {
        $key = apply_filters( \'import_post_meta_key\', $meta[\'key\'], $post_id, $post );
        $value = false;

        if ( \'_edit_last\' == $key ) {
            if ( isset( $this->processed_authors[intval($meta[\'value\'])] ) )
                $value = $this->processed_authors[intval($meta[\'value\'])];
            else
                $key = false;
        }

        if ( $key ) {
            // export gets meta straight from the DB so could have a serialized string
            if ( ! $value )
                $value = maybe_unserialize( $meta[\'value\'] );

            add_post_meta( $post_id, $key, $value );
            do_action( \'import_post_meta\', $post_id, $key, $value );

            // if the post has a featured image, take note of this in case of remap
            if ( \'_thumbnail_id\' == $key )
                $this->featured_images[$post_id] = (int) $value;
        }
    }
}
使用\'wp_import_post_meta\' 在插入之前调整后元的过滤器。可以通过返回empty value, 喜欢0.

我想知道其他桌子会发生什么。

以上所有信息都是通过阅读插件代码收集的(\\wordpress-importer\\wordpress-importer.php. 内联文档中的大部分内容都是用纯英语编写的。

此代码中没有运行SQL查询。所有添加到数据库的信息都是使用WordPress函数完成的。要了解exactly 如何影响任何表,请阅读代码。

结束

相关推荐

Importing csv file

我正在使用dvkob开发的CSV导入器插件。它工作得很好,可能是因为我每次只上传很少的帖子(大约50篇)。我现在需要知道的是如何添加元数据meta\\u值和meta\\u键。应将其插入Posteta表中。我是个编程新手。通过php myadmin直接导入时,会收到一条语法错误消息。我想这取决于字段的错误顺序。总之,在浪费时间洗牌字段和列之前,有人能帮我吗?我需要哪种工具?如何正确格式化csv文件?谢谢Patrick