Как получить значения подполя повторителя ACF для условного отображения в таблице? - PullRequest
0 голосов
/ 13 октября 2019

Я использую плагин Advanced Custom Fields (ACF) на сайте WordPress и пытаюсь отобразить спецификации продукта внутри таблицы. Некоторые продукты имеют обязательные поля, а некоторые являются необязательными. Поэтому я пытаюсь собрать некоторую логику для создания динамических таблиц. Если в необязательные значения не введены данные, я не хочу, чтобы они отображались в таблице, а также не отображались заголовки таблицы.

У меня возникли проблемы при их объединении. Кто-нибудь может предложить подход, который может работать? Мой код ниже:

if( have_rows('product_details') ): ?>

    <h2>Product Details</h2>

    <table>
        <tr>
            <th>SKU</th>
            <th>Size</th>
            <th>
                <?php if(get_sub_field('carton_size')): ?>
                    Carton Size
                <?php endif ?>
            </th>
            <th>
                <?php if(get_sub_field('box_quantity')): ?>
                    Box QTY
                <?php endif ?>
            </th>
            <th>
                <?php if(get_sub_field('weight')): ?>
                    Weight
                <?php endif ?>
            </th>
        </tr>

        <?php while ( have_rows('product_details') ) : the_row(); 

            // vars
            $sku = get_sub_field('sku');
            $size = get_sub_field('size');
            $carton_size = get_sub_field('carton_size');
            $box_quantity = get_sub_field('box_quantity');
            $weight = get_sub_field('weight');
        ?>

        <tr>
            <td><?php echo $sku ?></td>
            <td><?php echo $size ?></td>
            <td>
                <?php echo $carton_size ?>
            <td>
                <?php if(get_sub_field('box_quantity')): ?>
                    <?php echo $box_quantity ?>
                <?php endif ?>
            </td>
            <td>
                <?php if(get_sub_field('weight')): ?>
                    <?php echo $weight ?>
                <?php endif ?>
            </td>
        </tr>
    </table>
<?php endwhile; ?>
<?php endif; ?>

1 Ответ

0 голосов
/ 14 октября 2019

Я пришел к решению, которое сработало для меня. Вероятно, не самый элегантный, но он хорошо отображает и форматирует. Просто помещает черту в таблицу, когда значение не существует:

<?php
if( have_rows('product_details') ): ?>

    <h3>Product Details</h3>

    <table class="product_spec">
        <tr>
            <th>SKU</th>
            <th>Size (mm)</th>
            <th>Carton Size (mm)</th>
            <th>Box QTY</th>
            <th>Weight</th>
        </tr>

        <?php while ( have_rows('product_details') ) : the_row(); 

            // vars
            $sku = get_sub_field('sku');
            $size = get_sub_field('size');
            $carton_size = get_sub_field('carton_size');
            $box_quantity = get_sub_field('box_quantity');
            $weight = get_sub_field('weight');
        ?>

        <tr>
            <td><?php echo $sku ?></td>
            <td><?php echo $size ?></td>
            <td>
                <?php if($carton_size):
                    echo $carton_size;
                else : ?>
                    -
                <?php endif ?>
            </td>
            <td>
                <?php if($box_quantity):
                    echo $box_quantity;
                else : ?>
                    -
                <?php endif ?>
            </td>
            <td>
                <?php if($weight):
                    echo $weight;
                else : ?>
                    -
                <?php endif ?>
            </td>
        </tr>
        <?php endwhile; ?>
    </table>
<?php endif; ?>
...