Задача: В боковой колонке сайта требуется вывести перечень статей, у которых назначена своя собственная рейтинговая шкала (по значению произвольного поля WordPress «meta_key»). При этом нужно, чтобы сообщения были отсортированы по числовому значению этого поля (нужно, чтобы meta_value — было числом)
Решение В WordPress есть возможность добавлять любые произвольные поля (meta_key) и использовать затем их значения (meta_value) при оформлении сайта. Но важно то, что по умолчанию в базе данных WordPress тип значения meta_value является LONGTEXT, и без дополнительных усилий мы не можем упорядочить записи по числовому представлению meta_value.
Чтобы заставить MySQL вернуть значение meta_value в виде числа, мы должны исполнить запрос вида: ‘meta_value +0’.
Допустим, мы добавили произвольное поле с названием «rate», при написании статей мы назначаем некоторым своим записям числовые значения этого поля (5, 7, 29, 99 и т.д.) и затем хотим вывести эти статьи, упорядочив их по этому «рейтингу».
Итак, вот наш запрос и его исполнение (этот код можно добавить в файл sidebar.php):
posts LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id) WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->postmeta.meta_key = 'rate' ORDER BY $wpdb->postmeta.meta_value+0"; $pageposts = $wpdb->get_results($querystr, OBJECT); ?>