Как заказать в поле meta_key acf заполненное символом валюты и цифрами? - PullRequest
1 голос
/ 29 марта 2019

Я запрашиваю списки (пользовательский тип записи), используя WP_Query, и упорядочиваю результаты по мета-полю ACF.Поле содержит значения цены с символом валюты и разделением запятыми, например, 100 000 долларов США.

Вот $ args Я передаю WP_Query .

$args = array(
'post_type' => 'listing',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => '_listing_price',
'orderby' => 'meta_value',
'order' => 'ASC'
);
$listing_query = new WP_Query($args);

Результаты:

$0 $0 $100,000 $150,000 $22,000 $320,300 $33,000 $359,000.

Но мне нужен такой результат:

$0 $0 $22,000 $33,000 $100,000 $150,000 $320,300 $359,000.

1 Ответ

0 голосов
/ 29 марта 2019

В идеале, вы бы просто хранили целочисленное (или плавающее) значение, например: 0, 0, 22000, 323000 и т. Д. Это позволит вам добавлять любые символы валюты и форматирование. Вы хотите позже, и это облегчает сортировку и манипулирование.

Итак, прежде всего, вы должны оценить, можете ли вы пройти и сделать это (вероятно, это стоит вашего времени).

За исключением этого, вы можете попробовать использовать meta_value_num Параметр Orderby :

$args = array(
    'post_type'      => 'listing',
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'meta_key'       => '_listing_price',
    'orderby'        => 'meta_value_num',
    'order'          => 'ASC'
);

$listing_query = new WP_Query($args);

Однако я не уверен, что это сработает. Источник показывает, что он добавляет +0 к псевдониму мета-запроса, но в противном случае он не приводится, поэтому я не уверен, как он обрабатывает знаки доллара, запятые и другие символы.

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

...