如何以编程方式将XML数据导入Wordpress?

马克西·古尔班(Maciej Gurban)

Wordpress提供了一种使用XML导入和导出其数据的简便方法。这是通过基于GUI的内置导入器完成的。但是,我想做的是能够从主题中导入某些XML文件(在激活时或在执行函数后)。

我的情况:虽然有一些插件可以为您创建虚拟内容,但我找不到任何方法来做我要做的事情-导入存储在XML文件中的一组ACF字段。

什么办法吗?

马克西·古尔班(Maciej Gurban)

更新:此功能旨在处理XML数据,并且仅限于版本4的ACF。ACF5将其字段导出为JSON数据。

该解决方案变成了Wordpress插件

这是我的问题的解决方案。

function insert_acf_field( $xml_string, $allow_duplicates = false ) {

// Parse ACF post's XML
$content = simplexml_load_string( $xml_string, 'SimpleXMLElement', LIBXML_NOCDATA); 

// Parse XML post attributes containing fields
$wp_post_attributes = $content->channel->item->children('wp', true);

# Copy basic properties from the exported field
$wp_post_data = array(
    'post_type'   => 'acf',
    'post_title'  => $content->channel->item->title,
    'post_name'   => $wp_post_attributes->post_name,
    'post_status' => 'publish',
    'post_author' => 1

);

$the_post = get_page_by_title($content->channel->item->title, 'OBJECT', 'acf');

# Execute only if doesn't exist already
if ( !$the_post || $allow_duplicates == true ) {
    $post_id = wp_insert_post( $wp_post_data );
}
else {
    $post_id = $the_post->ID;
}

$wp_post_meta = $content->channel->item->children('wp', true);

if( $wp_post_meta ) {
    foreach ( $wp_post_meta as $row) {

        // Choose only arrays (postmeta)
        if( count($row) > 0) {
            // using addlashes on meta values to compensate for stripslashes() that will be run upon import
            update_post_meta( $post_id, $row->meta_key, addslashes( $row->meta_value ) );
        }

    }
}
}

使用方法如下:

函数期望至少$xml_string传递参数。它应包含在导出ACF字段(acf类型后)时由ACF插件生成的XML文件的内容

该函数将尝试创建一个新的ACF帖子,除非已经存在一个新的ACF帖子,然后使用字段填充它。要插入多个具有相同标题的字段(克隆),则应将其true作为第二个参数传递

还有一些问题有待解决,但是当前状态下的功能应该可以使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以编程方式将XML数据导入Wordpress?

来自分类Dev

如何以编程方式导入书签

来自分类Dev

如何以编程方式从Java创建XML?

来自分类Dev

如何以编程方式访问约束数据?

来自分类Dev

如何以编程方式导入/导出SQL数据库表

来自分类Dev

如何以编程方式将代码导出和导入到Excel工作表中?

来自分类Dev

如何使用JavaScript以编程方式使用Office加载项(以前称为Offices Apps)将XML数据导入Excel中

来自分类Dev

如何以编程方式将值添加到Wordpress模板文件?

来自分类Dev

如何以编程方式将ACF组添加到Wordpress的后端?

来自分类Dev

如何以编程方式而不是菜单xml将子菜单项添加到NavigationView

来自分类Dev

如何以编程方式将视图从 XML 添加到布局?

来自分类Dev

Grails:如何以编程方式将命令对象数据绑定到服务中的域对象?

来自分类Dev

如何以编程方式将IP数据包字节写入PCAP文件格式?

来自分类Dev

如何以编程方式从bash将数据发送到arduino

来自分类Dev

如何以编程方式从资源加载替代的strings.xml

来自分类Dev

如何以编程方式从StateListAnimator xml文件加载指定的Animator?

来自分类Dev

如何以编程方式在Android上加载动画XML文件?

来自分类Dev

如何以编程方式向XML文件部分添加行?

来自分类Dev

Flex 4-如何以编程方式加载XML文件?

来自分类Dev

如何以编程方式获取maven settings.xml 的路径

来自分类Dev

如何以编程方式编辑 Netlogo 的 setup.xml?

来自分类Dev

如何以编程方式获取 Android 中视图的 XML 代码?

来自分类Dev

当数据绑定到数据网格视图时,如何以编程方式将行添加到数据网格视图?

来自分类Dev

SAPUI5:如何以编程方式访问ODataModel数据?

来自分类Dev

如何以编程方式设置Magento存储配置数据?

来自分类Dev

如何以编程方式删除Android Sqlite数据库

来自分类Dev

如何以编程方式获取当日回填的外汇数据?

来自分类Dev

如何以编程方式访问EntityDataSource所选数据

来自分类Dev

如何以编程方式停止SSAS多维数据集处理?

Related 相关文章

  1. 1

    如何以编程方式将XML数据导入Wordpress?

  2. 2

    如何以编程方式导入书签

  3. 3

    如何以编程方式从Java创建XML?

  4. 4

    如何以编程方式访问约束数据?

  5. 5

    如何以编程方式导入/导出SQL数据库表

  6. 6

    如何以编程方式将代码导出和导入到Excel工作表中?

  7. 7

    如何使用JavaScript以编程方式使用Office加载项(以前称为Offices Apps)将XML数据导入Excel中

  8. 8

    如何以编程方式将值添加到Wordpress模板文件?

  9. 9

    如何以编程方式将ACF组添加到Wordpress的后端?

  10. 10

    如何以编程方式而不是菜单xml将子菜单项添加到NavigationView

  11. 11

    如何以编程方式将视图从 XML 添加到布局?

  12. 12

    Grails:如何以编程方式将命令对象数据绑定到服务中的域对象?

  13. 13

    如何以编程方式将IP数据包字节写入PCAP文件格式?

  14. 14

    如何以编程方式从bash将数据发送到arduino

  15. 15

    如何以编程方式从资源加载替代的strings.xml

  16. 16

    如何以编程方式从StateListAnimator xml文件加载指定的Animator?

  17. 17

    如何以编程方式在Android上加载动画XML文件?

  18. 18

    如何以编程方式向XML文件部分添加行?

  19. 19

    Flex 4-如何以编程方式加载XML文件?

  20. 20

    如何以编程方式获取maven settings.xml 的路径

  21. 21

    如何以编程方式编辑 Netlogo 的 setup.xml?

  22. 22

    如何以编程方式获取 Android 中视图的 XML 代码?

  23. 23

    当数据绑定到数据网格视图时,如何以编程方式将行添加到数据网格视图?

  24. 24

    SAPUI5:如何以编程方式访问ODataModel数据?

  25. 25

    如何以编程方式设置Magento存储配置数据?

  26. 26

    如何以编程方式删除Android Sqlite数据库

  27. 27

    如何以编程方式获取当日回填的外汇数据?

  28. 28

    如何以编程方式访问EntityDataSource所选数据

  29. 29

    如何以编程方式停止SSAS多维数据集处理?

热门标签

归档