首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将其他字段映射添加到从第三方API拉取代码

如何将其他字段映射添加到从第三方API拉取代码
EN

Stack Overflow用户
提问于 2016-09-11 06:09:32
回答 1查看 65关注 0票数 2

我正在使用教会社区构建应用程序接口(official docs,搜索"group profile“查看相关代码),并使用CCB Core WordPress Plugin将来自API的组数据同步到自定义帖子类型(字段,分类)。

CCB Core会自动映射大量此类数据,但它不会映射CCB用于区分不同组的组ID值,因此我希望对其进行同步。

相关代码保存在函数get_groups_custom_fields_map()get_groups_taxonomy_map()中。

我尝试向get_groups_taxonomy_map()添加类似以下内容的内容:

代码语言:javascript
运行
复制
'group_id' => array (
   'api_mapping' => 'group',
   'data_type' => 'integer',
),

但这不管用。对于编写代码来拉入此字段,有什么建议吗?

更新时间9/10/16下午7:25:

我想我已经很接近了。

我从Group Profile下的API文档中获取了XML,并通过simplexml和generated this output运行它。

然后,我将输出结果与get_groups_custom_fields_map和get_groups_custom_taxonomy_map的组织方式进行了比较,这使我相信以下内容应该可以工作:

代码语言:javascript
运行
复制
        'group' => array (
            'api_mapping' => 'group',
            'data_type' => 'object',
            'child_object' => array(
                'api_mapping' => '@attributes',
                'data_type' => 'object',
                'child_object' => array(
                    'group_id' => array(
                        'api_mapping' => 'id',
                        'data_type' => 'integer'
                    )
                )
            )
        ),

但它不是。我漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-09-11 21:33:39

从CCB返回的响应的SimpleXML表示恰好有一种非常令人沮丧的方式来反序列化从API中产生的实体(组、事件、个人等)的ID。(而且它只发生在ID上)。

尽管Group ID看起来像XML响应字符串中的一个属性,但它实际上是一个略有不同的属性。在对象响应中,请注意[@attributes]节点中的@符号。PHP不允许直接访问它。

请参阅"At sign" @ in SimpleXML object?

作为一种解决方法,我实际上在这里获得了组ID:https://github.com/jaredcobb/ccb-core/blob/1a6e88b47ad7d5293e88bac277e72cbc4e33a602/admin/class-ccb-core-sync.php#L589-L595

上述参考的代码片段:

代码语言:javascript
运行
复制
$group_id = 0;
foreach( $group->attributes() as $key => $value ) {
    if ( $key == 'id' ) {
        $group_id = (int) $value;
        break;
    }
}

所以一般来说,我们do可以访问该组id,我们现在只需要将它保存为post meta。我将更新插件以利用这些ID,但同时您可以直接使用$group_id变量并将post元保存在此函数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39431037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档