Помогите написать код счетчика просмотров, который обнуляется раз в сутки

K
На сайте с 10.01.2015
Offline
110
813

Я реализовал на сайте вывод популярных записей без плагина, а в качестве вывода используется параметр:

'meta_key' => 'post_views_count'
К сожалению, сортировка происходит по общему числу просмотров за несколько лет, то есть виджет может не обновляться месяцами, что не есть хорошо.

Сейчас просмотры в WP у меня определяются следующим кодом в файле functions:

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";
}
echo _e('', 'dot-b');
return $count;
}
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);
}
}

Как я уже понял, мне необходимо написать функцию, которая аналогичным образом будет считать просмотры, но в кастомные поля, и при этом обнулятся с помощью WP-Cron или чего-то подобного раз в сутки или раз в несколько дней. Как можно реализовать данную задумку?

S3
На сайте с 29.03.2012
Offline
349
#1

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

K
На сайте с 10.01.2015
Offline
110
#2

А то, что нужно мне тяжело реализовать?

Я_Рожден_В_СССР
На сайте с 21.08.2010
Offline
75
#3
дани мапов
На сайте с 06.09.2012
Offline
204
#4

Вот древний код для самописа, в порядок приводить лень, но принцип работы ясно видно. В today_hits - сколько просмотров за сутки, просто умножьте на 5.


$sql = "SELECT total_hits, today_hits, h_date FROM articles WHERE id = '$id' LIMIT 1";
$rs = mysql_query($sql);
$row = mysql_fetch_array($rs);

if (empty($row["total_hits"]))
$all=0;
else
$all=$row["total_hits"];

if (empty($row["today_hits"]))
$today_hits=0;
else
$today_hits=$row["today_hits"];

$all=$all+1;
$today_hits=$today_hits+1;

if (time() >= $row['h_date']) // если сутки с момента записи прошли
{
$sql = "UPDATE articles SET h_date = '".(time()+60*60*24)."', total_hits = '$all', today_hits = '1' WHERE id = '$id'";// обновим дату
$rs = mysql_query($sql);
}
else // если еще нет
{
/* обновим счетчики */
$sql = "UPDATE articles SET total_hits = '".$all."', today_hits = '".$today_hits."' WHERE id = '$id'";
$rs = mysql_query($sql);
}
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
K
На сайте с 10.01.2015
Offline
110
#5

Спасибо, но я достаточно плохо разбираюсь в php. Может кто-то сможет сделать это за небольшое вознаграждение?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий