Как сделать счётчик просмотров всех записей автора wordpress?

Ссылка скопирована
1 ответ

Есть сайт stihi.by
как сделать счётчик просмотров всех записей у каждого автора?
сейчас стоит плагин Posts and Users Stats, который считает просмотры для каждой записи...

Дополнительно:

Ответы:

$autor_id  = $post->post_author; 		$old_view  = get_user_meta( $autor_id, '_post_views', true ); 		$new_views = empty( $old_view ) ? 1 : (int) $old_view + 1; 		update_user_meta( $autor_id, '_post_views', $new_views );

$autor_id = $post->post_author; $old_view = get_user_meta( $autor_id, '_post_views', true ); $new_views = empty( $old_view ) ? 1 : (int) $old_view + 1; update_user_meta( $autor_id, '_post_views', $new_views );

  • потенциальные проблемы:
    1 racing condition
    2 некорректная работа при включенном кэше

    я бы вынес куда-то в отдельный эндпоинт и внутри дергал прямой запрос к БД типо `SET meta_value = meta_value + 1`

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

  • Дмитрий,
    1) racing condition - возможно, но тут не существенно
    2) это просто MVP - что бы избежать проблем с кэшем можно воткнуть через аякс через и для убедится не просто в посещении а в действии запускать по событию, например при прокрутке экрана к определённому месту.

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

    ну хочет человек пусть делает, про усложнения не нам судить, люди порой такой хотят, что закачаешься.

  • WP Panda, Дмитрий, прикольно вы поговорили друг с другом... я половину ваших слов гуглил )))
  • UN_Tony, ну код я дал, он работает, а дальше применяйте его
  • WP Panda, из всего выше написанного, я понял, что раз за год я этого не сделал, то не дано... значит нужна помощь во внедрении, сколько будет стоить посильная помощь?
  • UN_Tony, почта в профиле, с коммерцией туда
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Никита Орлов Ответ

Счётчик просмотров всех записей автора можно сделать двумя способами: считать просмотры каждой записи и суммировать их при выводе, либо увеличивать общий счётчик автора при каждом просмотре его записи. Второй вариант быстрее на фронте, но требует аккуратности с кэшем и накруткой.

Простой MVP:

add_action('template_redirect', function () {
    if (!is_singular('post')) {
        return;
    }
 
    $post_id = get_queried_object_id();
    $author_id = (int) get_post_field('post_author', $post_id);
 
    if (!$author_id) {
        return;
    }
 
    $views = (int) get_user_meta($author_id, '_author_total_views', true);
    update_user_meta($author_id, '_author_total_views', $views + 1);
});

add_action('template_redirect', function () { if (!is_singular('post')) { return; } $post_id = get_queried_object_id(); $author_id = (int) get_post_field('post_author', $post_id); if (!$author_id) { return; } $views = (int) get_user_meta($author_id, '_author_total_views', true); update_user_meta($author_id, '_author_total_views', $views + 1); });

Но у него есть минусы: кэш страниц может не запускать PHP, один пользователь может накрутить просмотры обновлением, а при одновременных запросах возможна потеря части инкрементов.

Более надёжно — отправлять просмотр AJAX-запросом или через REST endpoint после загрузки страницы, а в базе увеличивать значение атомарно SQL-запросом. Ещё лучше — использовать Метрику/Analytics для статистики, если точность нужна не для публичного рейтинга, а для понимания посещаемости.

Если просмотры нужны на профиле автора, выводите:

$views = (int) get_user_meta($author_id, '_author_total_views', true);
echo number_format_i18n($views);

$views = (int) get_user_meta($author_id, '_author_total_views', true); echo number_format_i18n($views);

Для публичных рейтингов обязательно добавьте защиту: не считать администраторов, ботов, повторные просмотры одного IP/пользователя за короткий период и технические превью.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно