Intereting Posts
Тема Customizier sanitize_callback не работает Изменить header.php после вызова ajax вызвать add_post_meta из плагина? Текстовый виджет для отображения полей базы данных на основе сообщений Категории list loop – добавить разделитель каждый год загружать пользовательские сообщения в опции выбора (wp_query не работает для более чем одного объекта) Пользовательская роль пользователя по-прежнему появляется после удаления, идеи? Как переопределить функцию в functions.php родительской темы? Как добавить гиперссылку на содержимое электронной почты в WordPress? Контент-генератор для сайта разработки Перенаправление всех сообщений после изменения структуры URL с помощью htaccess Последствия изменения wordpress.com, связанные с Jetpack URL выбранного изображения отображается, но не уменьшенное изображение Обновление wordpress нарушило мои постоянные ссылки Orderby ASC изменяет DESC в WP_Query

OrderBy сообщение Просмотров

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

Сортировать по: – Дата (/? Orderby = date) – Случайная (/? Orderby = rand) – Виды (здесь мне нужно orderby = views или что-то в этом роде)

Я просматриваю и просматриваю сообщения, используя этот код:

// Count views function setPostViews($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count=='') { $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); } else { $count++; update_post_meta($postID, $count_key, $count); } } // Show views function getPostViews($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count=='') { delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0 View"; } return $count.' Views'; } // Show views in WP-Admin add_filter('manage_posts_columns', 'posts_column_views'); add_action('manage_posts_custom_column', 'posts_custom_column_views', 5, 2); function posts_column_views($defaults) { $defaults['post_views'] = __('Views'); return $defaults; } function posts_custom_column_views($column_name, $id){ if($column_name === 'post_views') { echo getPostViews(get_the_ID()); } } 

Это возможно?

Solutions Collecting From Web of "OrderBy сообщение Просмотров"

Вы можете отсортировать свой запрос по номеру просмотра, используя мета-ключ:

 $query = new WP_Query( array( 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC', ) ); 

Это будет запрашивать ваши сообщения на основе просмотров. Вы можете изменить DESC на ASC или RAND чтобы достичь того, что вы просили.

Чтобы заставить его работать в действии, вы можете использовать pre_get_posts() для фильтрации вашего запроса. Используйте этот кусок кода в файле functions.php вашей темы:

 add_action( 'pre_get_posts', 'my_view_filter' ); function my_view_filter($query){ if ( !is_admin() && $query->is_main_query() && ( $query->is_home() || $query->is_archive() || $query->is_search() ) ) { if (isset($_REQUEST['orderby'])) { $order = $_REQUEST['orderby']; } if ( $order === 'views') { $query->set('meta_key', 'post_views_count'); $query->set('orderby', 'meta_value_num'); $query->set('order', 'DESC'); } } } 

Теперь, когда вы посещаете http://example.com/?orderby=views , ваши сообщения будут отфильтрованы по количеству просмотров (по убыванию, вы можете изменить его на все, что захотите)