wordpress - Wordpress - 自定义 PHP 函数,用于将 XML 中的多个节点保存到多个用户元字段中
问题描述
我们有一个 XML,其中包含一个父节点中的多个节点。我会给你下面的例子:
<PARENT>
<Data>
<DATE_FIELD>11.07.2018</DATE_FIELD>
<SUM_AVG/>
<DOUBLE_AVG/>
<THIRD_AVG/>
<FOURTH_AVG>45000.00</FOURTH_AVG>
</Data>
<Data>
<DATE_FIELD>10.08.2018</DATE_FIELD>
<SUM_AVG>546.45</SUM_AVG>
<DOUBLE_AVG>472.50</DOUBLE_AVG>
<THIRD_AVG>180.00</THIRD_AVG>
<FOURTH_AVG>44453.55</FOURTH_AVG>
</Data>
<Data>
<DATE_FIELD>10.09.2018</DATE_FIELD>
<SUM_AVG>536.59</SUM_AVG>
<DOUBLE_AVG>482.36</DOUBLE_AVG>
<THIRD_AVG>180.00</THIRD_AVG>
<FOURTH_AVG>43916.96</FOURTH_AVG>
</Data>
<Data>
<DATE_FIELD>12.06.2023</DATE_FIELD>
<SUM_AVG>995.85</SUM_AVG>
<DOUBLE_AVG>23.10</DOUBLE_AVG>
<THIRD_AVG>180.00</THIRD_AVG>
<FOURTH_AVG>1009.23</FOURTH_AVG>
</Data>
<Data>
<DATE_FIELD>10.07.2023</DATE_FIELD>
<SUM_AVG>1009.23</SUM_AVG>
<DOUBLE_AVG>9.80</DOUBLE_AVG>
<THIRD_AVG>180.00</THIRD_AVG>
<FOURTH_AVG/>
</Data>
</PARENT>
我们希望使用WP ALL IMPORT插件将这些多个值存储在 wp_usermeta 表(包含用户自定义字段的表)内的不同自定义字段中。默认情况下,您必须在插件的设置中手动分配相应的节点。
为此,我尝试将自定义 PHP 函数挂接到“ pmxi_saved_post ”操作中,循环遍历“ Data ”节点并将每个节点添加到一个适当单独的命名自定义字段中。因此,对于“数据”中的每个节点,我们必须将其存储到单独的自定义字段中。
问题是它没有在wp_usermeta表中存储任何内容。
这是代码:
add_action('pmxi_saved_post', 'post_saved', 10, 1);
function post_saved($id) {
foreach( $data as $key => $value ) {
update_post_meta( $post_id, $key, $value );
}
解决方案
我已经设法让它工作,具有以下功能:
function wpallimport_post_saved( $post_id, $xml_data, $is_update ) {
if(!empty($xml_data->PARENT){
$xml = $xml_data->PARENT;
$counter = 1;
foreach($xml->Data as $counts => $data){
foreach($data as $key => $user_meta){
update_user_meta( $post_id, strtolower($key) . "-data-" . $counter , current($user_meta));
}
$counter++;
}
}
}
推荐阅读
- javascript - NextJS 中每个组件的共享/获取数据
- swiftui - Swiftui Multi Picker 以最小最大值更改选择
- javascript - Quasar PWA Workbox 路由排除
- aws-lambda - 响应卡未显示在 website-lex 中
- prometheus - Prometheus 节点导出器未在 Centos 6 上返回指标
- python - ClientError:调用 ListObjects 操作时发生错误 (AccessDenied):访问被拒绝
- python - 列名前点的目的是什么
- gradlew - 优化 gradle wrapper 的安装大小
- kubernetes - Kubernetes 无法从通过 /etc/hosts 指向私有域的私有注册表中提取映像
- php - 如何隐藏身份证号码并在网址中仅保留姓名