RGameShow
@RGameShow
В поисках ответов на глупые вопросы

Как в WP Wooccomerce добавить «дополнительные услуги» в виде таблицы?

Есть ли плагин или может какой-то хак, который может реализовать подобное?

5bddb3ade0ec4059035429.jpeg
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 2
san_jorich
@san_jorich
Творческий кодер
Через произвольный тип записи с проивольными полями
Ответ написан
Комментировать
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!

1) установите плагин ACF Pro для создания кастомных полей или вкладок.
2) установите плагин ACF Tables для добавления таблиц.
3) создайте необходимый набор кастомных полей, а именно:
Повторитель для возможности добавления нескольких таблиц. А в него вложите ACF Tables.

Результат:
Вид из админки
5bddcc960f381864753553.jpeg
Вид из фронта (можно стилизовать по вкусу)
5bddcce05e495465285847.jpeg

Код для functions.php
Добавляем новую вкладку в вукомерц
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
$tabs['params_tab'] = array(
    'title'   => __( 'Параметры', 'woocommerce' ),
    'priority'  => 60,
    'callback'  => 'params_tab'
  );
  return $tabs;
}


Выводим содержимое таблицы для этой вкладки (functions.php). В данном случае ACF TABLE вложен в ACF Repeater.
function params_tab() {
  if( have_rows('wc_pr_params') ):
      while ( have_rows('wc_pr_params') ) : the_row();
        // начало таблицы
          $table = get_sub_field( 'params_table' );
          if ( $table ) {
              echo '<table class="params_table" border="0">';
                  if ( $table['header'] ) {
                      echo '<thead>';
                          echo '<tr>';
                              foreach ( $table['header'] as $th ) {
                                  echo '<th>';
                                      echo $th['c'];
                                  echo '</th>';
                              }
                          echo '</tr>';
                      echo '</thead>';
                  }
                  echo '<tbody>';
                      foreach ( $table['body'] as $tr ) {
                          echo '<tr>';
                              foreach ( $tr as $td ) {
                                  echo '<td>';
                                      echo $td['c'];
                                  echo '</td>';
                              }
                          echo '</tr>';
                      }
                  echo '</tbody>';
              echo '</table>'.'<br/>';
          } // конец таблицы
      endwhile; 
  else :
      // no rows found
  endif;
}


Вот, и все...
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы