将数据从任意CSV导入到WPAlChemy元字段

时间:2013-05-15 作者:ggg

我创建了一个custom post type 有几个custom fields 借助于WPAlchemy, 现在我需要import 从一些CSV files.

我正在使用WPALCHEMY_MODE_EXTRACT.

通过使用csv导入插件,我知道我可以正确导入Posteta表中的字段,但问题是我在后端和前端都看不到它们。

我设法区分了手动插入的帖子和导入的帖子,这是一个额外的元字段(_myprefix_meta_fields) 包含我不知道如何生成的序列化内容。

有没有关于如何解决问题并正确导入数据的建议?

UPDATE:查找WPAlchemy代码(here) 解决这个问题的唯一方法似乎是运行一个脚本,为每个自定义类型的帖子添加额外的元字段,这就是包含所有元框字段的数组的序列化。序列化和添加元字段是通过使用add_post_meta. 导入完数据后,我将为自己添加一个基本脚本作为答案。

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

下面是一段代码,类似于我在导入数据后用来修复问题的代码:

<?php
define(\'MY_METABOX_ID\', \'my_metabox_id\');
define(\'MY_METABOX_PREFIX\', \'my_metabox_prefix_\');
define(\'MY_CUSTOM_POST_TYPE\', \'my_custom_post_type\');

// Include WordPress
define(\'WP_USE_THEMES\', false);
define(\'WP_DEBUG\', 1);
require_once(\'../wp-load.php\');

// extract all MY_CUSTOM_POST_TYPE posts
$q = new WP_Query(\'post_type=\' . MY_CUSTOM_POST_TYPE . \'&nopaging=true\');

// for each post
while($q->have_posts()) {
    $q->next_post();

    $p = $q->post;
    $id = $p->ID;

    // check if the field already exists, take action only if it does not
    if (!get_post_meta($id, MY_METABOX_ID . \'_fields\', true)) {

        // crete the content
        $fields = array(
            MY_METABOX_PREFIX . \'field1\',
            MY_METABOX_PREFIX . \'field2\',
            MY_METABOX_PREFIX . \'field3\',
        );

        //add the meta field
        add_post_meta($id, MY_METABOX_ID . \'_fields\', $fields);
    }
}
echo \'DONE!\';

结束

相关推荐

WPAlChemy MediaAccess“添加媒体”按钮打开新页面而不是弹出窗口

我正在使用WPAlchemy来创建一个自定义的元框,让您可以上传媒体。但是,“添加媒体”按钮将我带到“将媒体文件添加到您的计算机…”作为一个新页面(好像它只是一个常规链接),而不是作为同一页面上的弹出窗口打开。我在一个普通的帖子中测试了我的媒体上传按钮,它弹出了。