Как перевернуть массив данных? - PullRequest
0 голосов
/ 07 мая 2019

Я хочу массив 1,3,5,7,9 макет будет обратно от массива 0,2,4,6,8,10 например, макет 1-го ряда - изображение слева и описание справа, макет 2-го ряда - изображение справа и описание слева и непрерывно.

Это мой код function.php

<?php
            foreach ( $termchildren as $child ) {
                $term = get_term_by( 'id', $child, $taxonomy_name );
                $image = get_field('featured_image', $term);

                ?>
                <div class="row">
                    <div id="product-cat <?php echo $term->slug ?>">
                        <div class="two-col product-cat-image">
                            <img src="<?php echo $image ?>">
                        </div>
                        <div class="two-col product-cat-details">
                            <?php
                                echo '<h4>'. $term->name .'</h4>';
                                echo '<p>'. $term->description .'</p>';
                                echo '<a class="product-cat-button" href="' . get_term_link( $child, $taxonomy_name ) . '">See Products</a>';
                            ?>
                        </div>
                    </div>
                </div><?php
            } ?>

Код CSS:

.row{
  display: flex;
  margin-left: -10px;
  margin-right: -10px;
  margin-bottom: 15px;
}
.row .col {
  flex: 1;
  padding-right: 10px;
  padding-left: 10px;
}

И результат все еще такой result

мои ожидания будут такими: expectation

Ответы [ 3 ]

4 голосов
/ 07 мая 2019

Нам просто нужно изменить код в function.php, как показано ниже.

<?php
    $i=0; 
    foreach ( $termchildren as $child ) {
        $term = get_term_by( 'id', $child, $taxonomy_name );
        $image = get_field('featured_image', $term);
        if($i % 2){ ?>
            <div class="row">
                <div id="product-cat <?php echo $term->slug ?>">
                    <div class="two-col product-cat-image">
                        <img src="<?php echo $image ?>">
                    </div>
                    <div class="two-col product-cat-details">
                        <?php
                            echo '<h4>'. $term->name .'</h4>';
                            echo '<p>'. $term->description .'</p>';
                            echo '<a class="product-cat-button" href="' . get_term_link( $child, $taxonomy_name ) . '">See Products</a>';
                        ?>
                    </div>
                </div>
            </div>
        <?php } else {?>
            <div class="row">
                <div id="product-cat <?php echo $term->slug ?>">
                    <div class="two-col product-cat-details">
                        <?php
                            echo '<h4>'. $term->name .'</h4>';
                            echo '<p>'. $term->description .'</p>';
                            echo '<a class="product-cat-button" href="' . get_term_link( $child, $taxonomy_name ) . '">See Products</a>';
                        ?>
                    </div>
                    <div class="two-col product-cat-image">
                        <img src="<?php echo $image ?>">
                    </div>
                </div>
            </div>
        <?php }
       $i++;
    }
?>

Надеюсь, что теперь у тебя есть все и дай мне знать, нужна ли помощь.

1 голос
/ 07 мая 2019

вам нужно добавить следующие css для достижения желаемого результата:

при нечетном .product-cat найденном div применяется order: 1; к контейнеру изображения (.product-cat-image) и order: 2; к контейнеру детали (.product-cat-details)

, когда даже .product-cat div найден, применяется order: 2; к контейнеру изображения (.product-cat-image) и order: 1; к подробному контейнеру (.product-cat-details)

.product-cat:nth-child(odd) .product-cat-image{
   -webkit-order: 1;
    order: 1;
}

.product-cat:nth-child(odd) .product-cat-details{
   -webkit-order: 2;
    order: 2;
}

.product-cat:nth-child(even) .product-cat-image{
   -webkit-order: 2;
    order: 2;
}

.product-cat:nth-child(even) .product-cat-details{
   -webkit-order: 1;
    order: 1;
}
1 голос
/ 07 мая 2019

Я предполагаю, что вы хотите array_diff [0,2,4,6,8,10].

Array_diff возвращает то, что отсутствует в массиве, если мы используем range () для создания ссылочного массива, то это будет выглядеть так:

$yourarray = [0,2,4,6,8,10];
$diff = array_diff(range(min($yourarray), max($yourarray)), $yourarray);
//[1,3,5,7,9]

https://3v4l.org/6QY3r

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...