Intereting Posts

Как ранжировать персонализированный тип сообщения из очков

Я использую настраиваемое поле с casino_rank_score с магазинами, например, рейтинг точки 4.9

Все казино хранятся в пользовательских казино типа post.

Мне нужно выяснить, как получить рейтинг, как RANKED #2 of 350 CASINOS из points .

WordPress хранит эти данные в таблице wp_postmeta .

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

Я читал это, но есть разные структуры и данные.

Вы можете запустить WP_Query чтобы получить все сообщения из casinos post_type и отсортировать их с помощью специального значения поля casino_rank_score . Затем вы можете обработать его для отображения рангов.

 $args = array( 'post_type' => 'casinos', 'meta_key' => 'casino_rank_score', 'orderby' => 'meta_value_num', 'posts_per_page' => 350, 'ignore_sticky_posts' => 1, ); $my_query = new WP_Query( $args ); 

Если вам нужно отобразить только одно сообщение, только как RANKED #2 of 350 CASINOS вы можете ограничить свои результаты с помощью 'posts_per_page' => 1, и 'posts_per_page' => 1, на 1 'offset' => 1, Это позволит вам получить 2-е место в казино.

РЕДАКТИРОВАТЬ

Чтобы получить ранг, вам нужно будет запустить пользовательский запрос. И именно так вы можете получить рейтинг текущего сообщения в своем пользовательском запросе. Он оптимизирован, потому что мы возвращаем только идентификатор, никакие данные не запрашиваются, так что это довольно быстро. Но чтобы оптимизировать его еще больше, вы можете кэшировать этот запрос с помощью Transients_API в течение нескольких часов или дней.

 $args = array( 'post_type' => 'casinos', 'meta_key' => 'casino_rank_score', 'orderby' => 'meta_value_num', 'posts_per_page' => -1, 'ignore_sticky_posts' => 1, 'fields' => 'ids', ); $my_query = new WP_Query( $args ); global $post; $total_casinos = $my_query->post_count; $casinos_rank = array_search( $post->ID, $my_query->posts ) + 1; echo "RANKED #" . $casinos_rank . " of " . $total_casinos . " CASINOS"; 

Это tested и working