WP ALL Import Load Фильтрация изображений по атрибуту узла xml
У меня есть эти узлы XML
<file_allegati>
<allegato id="0" planimetria="0" type="foto">
<id>0</id>
<file_path>https://##.jpg </file_path>
</allegato>
<allegato id="1" planimetria="1" type="planimetria">
<id>1</id>
<file_path>https://##.jpg </file_path>
</allegato>
</file_allegati>
И я хотел бы разделить изображение с атрибутом "planimetria=1" и записать file_path в пользовательское поле.
Я не могу использовать метод [FOREACH] для wpallimportso. Я пытаюсь вызвать функцию с именем set_planimetrie(file_allegati[1])
И я написал эту функцию PHP, но она не работает.
function set_planimetrie( $allegati ) {
$result="";
$xml = new SimpleXMLElement($allegati);
foreach($xml->children() as $allegato)
{
if($allegato['type']=='planimetria' && $allegato['planimetria']==1){
if( $result != ''){$result .=',';}
$result.= $allegato->file_path;
}
return $result;
}
}
1 ответ
Вы получаете только первое значение foreach
потому что вы используете return
утверждение внутри foreach.
Тип возврата $allegato['type']
это SimpleXMLElement. Вы можете получить строку с помощью __toString или использовать (string)
,
Если вы поместите оператор return за пределы foreach и используете (string)
чтобы получить значение, ваш код будет выглядеть так:
function set_planimetrie($allegati)
{
$result = '';
$xml = new SimpleXMLElement($allegati);
foreach ($xml->children() as $allegato) {
if ((string)$allegato['type'] === 'planimetria' && (string)$allegato['planimetria'] === "1") {
if ($result !== '') {
$result .= ',';
}
$result .= $allegato->file_path;
}
}
return $result;
}