2013-07-03 3 views
1

Я хочу переопределить способ вывода атрибутов Woocommerce. По умолчанию атрибуты отображаются в двух столбцах - столбец 1 является меткой, столбец 2 представляет собой список атрибутов, разделенных запятыми. Я хочу переопределить это и показать каждый атрибут в своей собственной ячейке. Вот исходный код:Изменение Woocommerce от запятых к ячейкам таблицы

<?php foreach ($attributes as $attribute) : 

    if (empty($attribute['is_visible']) || ($attribute['is_taxonomy'] && ! taxonomy_exists($attribute['name']))) 
     continue; 
    ?> 

    <tr class="<?php if (($alt = $alt * -1) == 1) echo 'alt'; ?>"> 
     <th><?php echo $woocommerce->get_helper('attribute')->attribute_label($attribute['name']); ?></th> 

     <td><?php 
      if ($attribute['is_taxonomy']) { 

       $values = woocommerce_get_product_terms($product->id, $attribute['name'], 'names'); 
       echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values); 

      } else { 

       // Convert pipes to commas and display values 
       $values = array_map('trim', explode('|', $attribute['value'])); 
       echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values); 

      } 
     ?></td> 
     <?php endforeach; ?> 
    </tr> 

<?php endforeach; ?> 

Я продолжаю думать, мне нужно установить еще один foreach заявления в рамках td, но я не уверен, о том, как получить его установку.

ответ

1

Основном у вас есть, с этим кодом, этот выход:

<tr> 
<th>atribute label</th> 
<td>atribute name</td> 
<tr> 

Итак, вам нужно только вывести что-то вроде: «atribute этикетки - atribute имя», для этого вам нужно всего лишь удалить тыс теги и поместите код для метки внутри td.

коснуться как это:

<tr class="<?php if (($alt = $alt * -1) == 1) echo 'alt'; ?>"> 


    <td> 
     <?php echo $woocommerce->get_helper('attribute')->attribute_label($attribute['name']); ?> 
     <?php 
     if ($attribute['is_taxonomy']) { 

      $values = woocommerce_get_product_terms($product->id, $attribute['name'], 'names'); 
      echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values); 

     } else { 

      // Convert pipes to commas and display values 
      $values = array_map('trim', explode('|', $attribute['value'])); 
      echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values); 

     } 
    ?></td> 
    <?php endforeach; ?> 
</tr> 
1

Я понял это ... мне нужно, чтобы настроить заявление foreach и как клетки появляются в строке (и то, что появляется в них), вот мой доработан код однако, мне бы хотелось предложить предложения по его улучшению:

<?php foreach ($attributes as $attribute) : 

    if (empty($attribute['is_visible']) || ($attribute['is_taxonomy'] && ! taxonomy_exists($attribute['name']))) 
     continue; 
    ?> 
    <tr> 
     <th scope="row"><?php echo $woocommerce->attribute_label($attribute['name']); ?></th> 
     <?php 
      if ($attribute['is_taxonomy']) { 

       $values = woocommerce_get_product_terms($product->id, $attribute['name'], 'names'); 
       foreach ($values as $value) : 
        echo '<td>'; 
        echo $value; 
        echo '</td>'; 
       endforeach; 
      } else { 

       $values = array_map('trim', explode('|', $attribute['value'])); 
       foreach ($values as $value) : 
        echo '<td>'; 
        echo $value; 
        echo '</td>'; 
       endforeach; 
      } 
     ?> 
    </tr><?php endforeach; ?> 
+0

Я следил за вашим кодом, но это не сработало для меня. Эти запятые все еще существуют. Был ли отредактирован файл product-attributes.php? Есть ли несколько файлов, которые необходимо отредактировать? Я запускаю свой WP на localhost, не знаю, имеет ли это значение или нет. – abracassabra

+1

Да, это был файл-attributes.php. Я скопировал файл из папки плагинов woocommerce в wp-content/themes/mytheme/woocommerce/single-product/product-attributes.php и внес изменения там. Таким образом, он удобен для обновления. Работа на локальном хосте не должна иметь значения. –

+0

Хорошо, я понял, тема, которую я использую (Avada by Theme Fusion), кажется, сохраняет файлы Woocommerce в 2 каталогах, вероятно, будет, как вы сказали, обновлять; поэтому у меня уже было 2 копии файла, первый путь - wp-content/plugins/woocommerce/templates/single-product/product-attributes.php, второй путь - wp-content/themes/Avada/woocommerce/single-product /product-attributes.php. Выключает редактирование файла под wp-content/plugins/woocommerce/ничего не сделал, пришлось внести изменения wp-content/themes/Avada/woocommerce /. Работало после этого:) – abracassabra

Смежные вопросы