Пытаясь создать страницу популярных сообщений в WordPress с PHP

Большое спасибо за информацию о: популярных публикациях WordPress без использования плагинов, которые очень помогли мне собрать свой собственный шаблон шаблонов популярных сообщений для моего сайта WordPress. Однако, мне кажется, мне нужно изменить код, чтобы он лучше себя вел, и я не уверен, что делать.

Новая страница находится по адресу http://sassyginger.com/most-popular-posts . Он показывает две записи (когда предполагается, что они показывают пять), а затем ассоциирует их как с «нулевыми представлениями», которые, как я знаю, неверны.

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

Спасибо!

WordPress не отслеживает просмотры сообщений по умолчанию, поэтому, если вы не хотите использовать плагин, вам нужно создать настраиваемое поле для всех сообщений, которое содержит представления. А затем напишите функцию, которая принимает это значение, и добавляет все, что кто-то загружает эту страницу. (Скажем, вы положили функцию в свои функции. Php) и назовите ее из своего шаблона и отправите postid.

функция может выглядеть примерно так:

function addPostView($postID) { $views = 'post_views'; // post_views is the custom field name $count = get_post_meta($postID, $views, true); // grab the value from that custom field // Now we need to check that the value we just grabbed isn't blank, if it is we need to set it to 1, since it would be our first view on this post. if($count==''){ $count = 0; update_post_meta($postID, $views, '1'); }else{ // else we can just add one to the number. $count++; update_post_meta($postID, $views, $count); } } 

И в нашем одном шаблоне мы будем называть функцию где-то вроде:

 addPostView(get_the_ID()); 

Тогда проблема номер два, вы не можете запрашивать сообщения с операторами, поэтому вы не можете запрашивать только пять сообщений с наивысшими видами, поэтому вам, возможно, придется запрашивать все сообщения, сохранять пользовательские поля views и post id в массиве, затем сортируйте массив (с функцией сортировки php). Теперь у вас есть каждый идентификатор сообщений, и он публикует сообщения в отсортированном массиве. Итак, возьмите первые пять (или, в зависимости от того, как вы их отсортировали), и вы получили пять почтовых идентификаторов с наибольшим количеством просмотров.

 //ordinary wp_query $i = 0; // keeping track of our array //while(post-> etc.... global $post; $views = get_post_meta($post->ID, 'post_views', true); // Grab our value /* You could also use an object here */ $postArray[$i][0] = $views; // set it in slot $i of our array $postArray[$i][1] = $post->ID; // and also set the postID in the same slot $i++; //endwhile; 

Чтобы отсортировать массив:

  rsort($postArray); $postArray = array_slice( $postArray, 0, 5 ); // grab only the first 5 values, which will be the ones with highest views. 

Теперь вам нужно сделать второй запрос, в котором вы просто запрашиваете эти идентификаторы (с помощью селектора «post__in», а затем вы можете их закодировать, как хотите.

Просто заметьте, что я не пробовал этот код, но в прошлом я сделал что-то подобное. Это может быть не лучшее решение, но оно выполнит свою работу. Запрос через все сообщения (если у вас есть ОДИН ИЗ ИХ), только для получения пяти или около того сообщений, не может быть хорошей практикой 🙂