• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Cчетчик постов за день

metallphilin

старожил nulled
Регистрация
25 Авг 2006
Сообщения
680
Реакции
212
Необходимо вывести число новых записей, добавленных с начала дня. Нашел пример реализации Для просмотра ссылки Войди или Зарегистрируйся, но работать он отказывается.

Каким образом посчитать, сколько записей было добавлено в день?

Заранее благодарю.
 
Всё может оказаться проще - есть функция Для просмотра ссылки Войди или Зарегистрируйся, но каким образом в нее передать параметр, что нужно отобрать посты за день - пока не ясно.

Кто может помочь решить задачу?
 
Последнее редактирование:
значит вы его криво копипастите - он нормально работает - Для просмотра ссылки Войди или Зарегистрируйся

увы, но конкретно за день - код не работает, это вторая функция по ссылке из примера.

выводит значение, похоже что id последнего поста.
 
Необходимо вывести число новых записей, добавленных с начала дня. Нашел пример реализации Для просмотра ссылки Войди или Зарегистрируйся, но работать он отказывается.
Проверил, действительно выдаёт совершенно левые данные.

Потрясающий пример говнокода от WP:
Там запрос не предполагает вариантов - SELECT COUNT(ID) вернёт количество строк, а в зависимости от выбора функции будут сделаны фильтры (либо за 24 часа, либо за текущую дату)
Функции используются правильные и в соответствии с описанием должны выводить количество постов, а выводят какую-то хрень...
 
Раскопал, дело было вот в чем: $wpdb->prepare использует функцию Для просмотра ссылки Войди или Зарегистрируйся, она в свою очередь не понимает тип в строке
Код:
"AND DATE_FORMAT(post_date, '%Y-%m-%d') = %s",

Поэтому фиксим очень просто, дописав %:

Код:
function get_posts_count_from_today($post_type ='post') {
    global $wpdb;
   
    $numposts = $wpdb->get_var(
        $wpdb->prepare(
            "SELECT COUNT(ID) ".
            "FROM {$wpdb->posts} ".
            "WHERE post_status='publish' ".
                "AND post_type= %s ".
                "AND DATE_FORMAT(post_date, '%%Y-%%m-%%d') = %s",
            $post_type, date('Y-m-d', time())
        )
    );
    return $numposts;
}

Всем спасибо за внимание и помощь :)
 
Заметил, что не корректно возвращается дата после 00.00 и данные видим из "вчера".


Фиксим так:

меняем
date('Y-m-d', time()) на (new DateTime())->format('Y-m-d')


Если по каким-то причинам, всё равно видим сдвиг времени, принудительно указываем пояс: (new DateTime('now', new DateTimeZone('Europe/Moscow')))->format('Y-m-d')

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

Код:
// счётчик постов за день


function get_posts_count_from_today($post_type ='post') {
    global $wpdb;
   
    $numposts = $wpdb->get_var(
        $wpdb->prepare(
            "SELECT COUNT(ID) ".
            "FROM {$wpdb->posts} ".
            "WHERE post_status='publish' ".
                "AND post_type= %s ".
                "AND DATE_FORMAT(post_date, '%%Y-%%m-%%d') = %s",
           // $post_type, date('Y-m-d')
            $post_type, (new DateTime('now', new DateTimeZone('Europe/Moscow')))->format('Y-m-d') // фикс на дату
        )
    );
    return $numposts;
}


// ссылка на посты за день

function get_link_post_from_today() {
   
    $numposts = get_posts_count_from_today();
    $linkposts = get_day_link();
   
 
    if ($numposts) {
        echo "<a href=\"$linkposts\" title=\"Новости за сегодняшний день\" rel=\"dofollow\">новости сегодня</a>";
    }
    else {
        echo "новости сегодня";
    }
   
}
 
Назад
Сверху