Как правильно сделаь цикл для получения Характеистик товара woocomerce?

Есть плагин для создания xml для выгрузки товаров на розетка, решил немного доработать его. Но столкнулся с проблемой.
Плагин генерирует дубли Названия характеристики при составлении фида.
5fc515e289cad263788728.png

А нужно что бы было вот так как для быстрых атрибутов.
5fc515f659943995086890.png

Вот код который отвечает за получения Характеристики и его параметров:
foreach ( $general_atts as $general_att ) {
						$general_att_array = $general_att->get_data();
						//var_dump($general_att_array);
						if ( true === $general_att_array['variation'] ) {
							continue;
						}
						if ( 1 === $general_att_array['is_taxonomy'] ) {
						$tax_att = get_taxonomy( $general_att_array['name'] );
							if ( ! empty( $tax_att ) ) {
								foreach ( $general_att_array['options'] as $general_att_value ) {
									$products .= "\n\t\t\t<param name=\"". $tax_att->labels->singular_name ."\">";
									$att_term = get_term($general_att_value);
									$products .="\n\t\t\t" . $att_term->name . "</param>";
								}
							}
						} else {
							$products .= "\n\t\t\t<param name=\"". $general_att_array['name'] ."\"><![CDATA[" . str_replace( ' | ', '<br> ', $general_att_array['value'] ) . "]]></param>";
						}
					}
					
				}


Помоги сделать так что бы названия характеристи не дублировалось, а все параметры прописывались через запятую например.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
этот кусок
foreach ( $general_att_array['options'] as $general_att_value ) {
                  $products .= "\n\t\t\t<param name=\"". $tax_att->labels->singular_name ."\">";
                  $att_term = get_term($general_att_value);
                  $products .="\n\t\t\t" . $att_term->name . "</param>";
                }

замените на
$attr = [];
	foreach ( $general_att_array[ 'options' ] as $general_att_value ) {
		$att_term = get_term( $general_att_value );
		$attr[]   = $att_term->name;
	}
	$products .= "\n\t\t\t" . sprintf('<param name="%s">%s</param>',$tax_att->labels->singular_name,implode( ',', $attr ));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы