Можно ли отсортировать / переупорядочить цикл wp_query по динамическому значению, созданному из настраиваемого поля? - PullRequest
0 голосов
/ 05 июня 2019

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

Я пытался использовать usort, но я не знаю, как правильно его выполнить.


$loop = new WP_Query( $args );

function customCompare($Aint, $Bint)
{
$Aint = $distance;  
$Bint = $distance;
return ($Aint < $Bint);
} 

usort($loop->posts, 'customCompare');

while ( $loop->have_posts() ) : $loop->the_post(); 

$address = get_field('acf_address');
$distance = do_shortcode("[distance address='".$address."']");


Я ожидаю, что мои данные будут отображаться от минимального значения расстояния до самого высокого, но сейчас они не влияют на мой цикл, просто отображают порядок по умолчанию.что означает, что мой код не работает.Буду признателен за любую помощь / предложение

1 Ответ

0 голосов
/ 06 июня 2019

я обновил свой код, сохранил нужные данные в массиве и использовал array_multisort

$merchantPost = get_posts( $args ); 

        foreach ( $merchantPost as $post ) : 
            setup_postdata( $post ); 


            $merchant_list[] = array(
                'acf_address' => get_post_meta( $post->ID, 'acf_address', true ),
                'distance' => do_shortcode("[distance address_to='".get_field('acf_address')."']"),
                'post_title' => get_the_title(),
                'permalink' => get_the_permalink(),
                'gallery' => get_field('gallery'),
                'image' => wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ),
                'terms' => get_the_terms( $post->ID, 'merchant_categories' ),
            ); 

        endforeach;

       wp_reset_postdata();


        $all_distance = array();
            foreach ( $merchant_list as $mlist ) {
                $all_distance[] = $mlist['distance'];
            }

            array_multisort($all_distance, SORT_ASC, $merchant_list, SORT_NUMERIC);

Теперь моя проблема - разбиение на страницы, так как я не использую цикл WordPress по умолчанию., Но это для другой темы.

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