WP ALL Import按XML节点属性筛选图片问题求助
解决WP ALL Import筛选带planimetria=1属性图片并写入自定义字段的问题
我来帮你搞定这个WP ALL Import里的图片筛选问题!你之前调用set_planimetrie(file_allegati[1])没生效,主要问题应该是只传入了单个节点,没遍历所有图片节点,而且函数内部的属性判断逻辑可能也没处理到位。下面是具体的解决方案:
1. 编写正确的PHP处理函数
首先在WP ALL Import的「函数编辑器」里添加这个函数,它会遍历所有图片节点,筛选出带planimetria="1"属性的节点并返回其file_path:
function set_planimetrie($allegati) { // 先判断传入的是否是节点集合数组 if (!is_array($allegati)) { return ''; } // 遍历所有图片节点 foreach ($allegati as $allegato) { // 获取当前节点的planimetria属性值 $planimetria_val = isset($allegato['planimetria']) ? $allegato['planimetria'] : ''; // 匹配属性值为1的节点 if ($planimetria_val === '1') { // 返回对应的file_path,不存在则返回空 return isset($allegato['file_path']) ? $allegato['file_path'] : ''; } } // 没有找到符合条件的节点时返回空 return ''; }
2. 在WP ALL Import中正确调用函数
在你要写入的自定义字段输入框里,传入整个图片节点集合(不要加索引[1],因为我们要遍历所有节点),格式如下:
[set_planimetrie({file_allegati})]
注意:{file_allegati}要替换成你XML中对应图片节点的实际变量名(比如你的XML里图片节点是<allegati>,就写{allegati})。
3. 调试小技巧(如果还是没生效)
如果函数还是没返回预期值,可以加日志调试,看看传入的节点结构是什么样的:
修改函数,添加日志输出:
function set_planimetrie($allegati) { // 把传入的节点结构写入WP日志,方便排查 error_log('传入的图片节点结构:' . print_r($allegati, true)); if (!is_array($allegati)) { return ''; } foreach ($allegati as $allegato) { $planimetria_val = isset($allegato['planimetria']) ? $allegato['planimetria'] : ''; if ($planimetria_val === '1') { return isset($allegato['file_path']) ? $allegato['file_path'] : ''; } } return ''; }
然后你可以在WordPress后台的「工具」→「站点健康」→「日志」里查看PHP日志,确认节点的属性和结构是否符合预期。
注意事项
- 确保XML里的
planimetria属性值确实是1(注意是字符串还是数字,函数里用===是严格匹配,如果是数字可以改成==); - 确认WP ALL Import的变量名和XML节点完全对应,嵌套节点要写成
{父节点->子节点}的格式。
内容的提问来源于stack exchange,提问作者user3607711
相关产品推荐
相关产品推荐

