Поддержка Темы и шаблоны Вывод количества просмотров и комментариев

  • Всем доброго дня! Нужна помощь. Ковыряю тему MH Newsdesk Lite. Отличная тема, но столкнулся с проблемой вывода количества просмотров и комментариев…

    В данной теме данные по каждому посту выводятся через отдельный файл mh-custom-functions.php. В нем удалось отыскать кусок кода, отвечающий за вывод данных о посте:

    /***** Output Post Meta Data *****/
    
    if (!function_exists('mh_newsdesk_lite_post_meta')) {
    	function mh_newsdesk_lite_post_meta() {
    		echo '<p class="entry-meta">' . "\n";
    			if (has_category() && !is_single()) {
    				echo '<span class="entry-meta-cats">' . get_the_category_list(', ', '') . '</span>' . "\n";
    			}
    			if (is_single()) {
    				echo '<span class="entry-meta-author vcard author">' . sprintf(_x('Автор: %s', 'post author', 'mh-newsdesk-lite'), '<a class="fn" href="' . esc_url(get_author_posts_url(get_the_author_meta('ID'))) . '">' . esc_html(get_the_author()) . '</a>') . '</span>' . "\n";
    			}
    			echo '<span class="entry-meta-date updated">' . get_the_date() . '</span>' . "\n";
    			echo '' . "\n";
    		echo '</p>' . "\n";
    	}
    }

    Тут, как видите, категория, автор и дата. Нужно сюда добавить количество просмотров и количество комментариев. У меня не выходит (

    Прошу помощи.

    Заранее спасибо!

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Количество одобренных комментариев находится в поле comment_count объекта поста:

    echo '<span class="entry-meta-ncomments">', get_post()->comment_count, '</span>';

    Также можно использовать get_comments() с аргументом 'count' => true:

    $n_count = get_comments(array('post_id' => $post_id, 'count' => true, /* другие параметры */ ));

    Такой подход выполнит дополнительное обращение к БД. Его имеет смысл использовать, если требуется рассчитать количество комментариев в выборке по определённым параметрам (статус, идентификатор автора и т.д.);

    Для подсчёта количества просмотров требуется плагин, считающий просмотры.
    Например post-views — он добавит функцию get_post_views(), использовать которую можно, например, так:

    if (function_exists('get_post_views')) {
        $n_views = get_post_views('normal', 'total', 'content', false, get_post()->ID);
        echo '<span class="entry-meta-nviews">', $n_views, '</span>';
    }

    Проверка на наличие функции необходима на случай отключения плагина.

    • Ответ изменён 7 лет, 5 месяцев назад пользователем Gottfrid Q.. Причина: в листинге указана переменная $post вместо функции get_post()

    Комментарии вывести удалось
    echo '<span class="entry-meta-ncomments">', get_post()->comment_count, '</span>';
    заработало! спасибо!

    А вот количество просмотров — нет… post-views — стоит.

    Возникает ли при вызове get_post_views() какое-нибудь сообщение об ошибке?
    Присутствует ли в меню «Настройки» пункт «Post Views» и выдаётся ли на его экране информация по просмотрам?

    Сразу после активации плагина вызов get_post_views(…) для любого поста выдаёт 0.

    Хм, очень странно. Только сейчас заметил! Плагин стоит, он активирован, но в меню Настройки пункта Post Views нет… Хотя, если зайти в админке в список публикаций, там подсчет ведется.

    Никаких ошибок не выдает.

    • Ответ изменён 7 лет, 4 месяца назад пользователем mazurik.

    Может быть плагин не тот? Я имел в виду этот: https://wordpress.org/plugins/post-views/.

    Да, странно… Стоит WP-post-view

    Поставил тот что Вы указали. Вывести результат удалось, НО, в админке количество просмотров 250, а на самом сайте, почему-то, только 3… Т.е., он берет данные не из базы данных, а начал считать их сам с нуля…

    Модератор Yuri

    (@yube)

    Т.е., он берет данные не из базы данных, а начал считать их сам с нуля…

    Каждый плагин хранит данные по-своему, как Автор придумает. Иногда, правда, случаются совпадения, но это скорее исключение, чем правило.

    А есть ли плагин, который выводит именно данные hits из базы данных?

    Модератор Yuri

    (@yube)

    данные hits из базы данных?

    Движок не считает просмотры. Какой плагин записал, тот и должен читать и выводить.

    При установленном WP-post-view выдать просмотры можно функцией echo_post_views($post_id):

    if (function_exists('echo_post_views')) {
        echo_post_views(get_post()->ID);
    }

    Каждый такой вызов производит 3 обращения к БД и увеличивает значение счётчика просмотров на 1, поэтому вызывать её следует только на странице поста и только для этого же поста.
    Причём при первом вызове для определённого поста функция выдаёт 0, хотя счётчик устанавливается в 1.

    На странице архива можно аналогичным образом использовать wp_get_post_views($post_id).

    Вас понял! Благодарю всех за помощь!

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Вывод количества просмотров и комментариев» закрыта для новых ответов.