Сортировать значение настраиваемого поля внутри цикла for - PullRequest
0 голосов
/ 18 октября 2018

В настоящее время я использую плагин Custom Field Suite для WordPress, чтобы получить связь между типами записей.Мой код выглядит следующим образом:

<div class="productList">
    <?php 
    $values = CFS()->get( 'auctioned_items' ); 

    //pagination
    $nb_elem_per_page = 16;
    $page = isset($_GET['nav'])?intval($_GET['nav']-1):0;
    $current_page = $_GET['nav'];
    $data = $values;
    $count = 0;
    if($i %$nb_elem_per_page != 0) {
        $number_of_pages = intval(count($data)/$nb_elem_per_page)+2;
    } else {
        $number_of_pages = intval(count($data)/$nb_elem_per_page)+1;
    }

    foreach ( array_slice( $data, $page*$nb_elem_per_page, $nb_elem_per_page) as $post_id) {
        $lot_number = CFS()->get( 'lot_number', $post_id );
        $count++;
        if (empty($current_page)) {
            $newCount = ($count + ((1 + 1) - 1) * $nb_elem_per_page) - $nb_elem_per_page;
        } else {
            $newCount = ($count + (($current_page + 1) - 1) * $nb_elem_per_page) - $nb_elem_per_page;
        }
        //sort by $lot_number
    ?>
    <p class="lot"><?php echo $lot_number; ?></p>
    <h3><?php echo $the_post->post_title; ?></h3>
    <?php } ?>
</div>

$ values ​​- это массив, в котором перечислены все идентификаторы связанных типов записей.Это выглядит так: Array ([0] => 111 [1] => 109 [2] => 110)

Это приводит к выводу списка связанных сообщений на основе его позиции в массиве.Однако я хотел отсортировать значения на основе настраиваемого поля с именем $ lot_number.$ lot_number - это просто вводимые числа, но иногда будут случаи, когда используется буква (например, 8, 9, 10A, 10B, 11)

Есть ли способ сделать это?Это сбивает с толку, так как здесь задействована нумерация страниц.

1 Ответ

0 голосов
/ 18 октября 2018

Если я правильно понял, вы можете попробовать это:

<div class="productList">
    <?php
    $values = CFS()->get( 'auctioned_items' );

    //pagination
    $nb_elem_per_page = 16;
    $page             = isset( $_GET[ 'nav' ] ) ? intval( $_GET[ 'nav' ] - 1 ) : 0;
    $current_page     = $_GET[ 'nav' ];
    $data             = $values;
    if ( $i % $nb_elem_per_page != 0 ) {
        $number_of_pages = intval( count( $data ) / $nb_elem_per_page ) + 2;
    } else {
        $number_of_pages = intval( count( $data ) / $nb_elem_per_page ) + 1;
    }

    $sorted = [];
    $posts  = array_slice( $data, $page * $nb_elem_per_page, $nb_elem_per_page );

    foreach ( $posts as $post_id ) {
        $sorted[ $post_id ] = CFS()->get( 'lot_number', $post_id );
    }

    // you can use either asort(low to high) or arsort(high to low)
    // there are some flags too, see here: http://php.net/manual/en/function.sort.php
    asort( $sorted );

    // and now...
    foreach ( $sorted as $post_id => $lot_number ) {
        ?>
        <p class="lot"><?php echo $lot_number; ?></p>
        <h3><?php echo $the_post->post_title; ?></h3>
    <?php } ?>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...