Урок 110. Выводим количество просмотров статьи в админке!

Привет!
Хотели бы Вы знать, как много раз прочитана Ваша та или иная статья? Думаю да, однако многих останавливает то, что придется выводить кол-во просмотров статьи на сайте. То есть информация будет видна всем. Я же предлагаю такой вариант: прописываем код, который будет вести подсчет для каждой статьи, и прописываем второй код - для отображения количества просмотров в админке. Плагин мы рассматривать не будем, так как его настраивать придется в двое дольше, а эффект будет хуже. В первую очередь эта статья будет полезна тем, чей блог еще молодой, и малопосещаемый. Цифры на счетчике - это конечно хорошо, но надо и знать, читают вообще статьи, или нет. И какие больше, какие меньше.
Плохая новость состоит в том, что если Вы сейчас установите данный код, то количество просмотров каждой статьи будет равно 0. То есть, информации не было раньше о том, читали статью или нет. В принципе это логично, ведь команды на подсчет никто не давал.
Вот сегодня дадим такую команду, уж лучше поздно, чем никогда. Переходим к действию.
Эта статья будет содержать 2 варианта прописки кода, ибо в результате моих тестов оказалось, что первый вариант, который, к слову, распространен в интернете, работает только на 40% шаблонах, при чем именно на "простеньких", без особой функциональности.
На моем шаблоне этот вариант не пошел, пришлось искать проблему и устранять ее.
Вариант 1. Самый обычный
Открываем файл functions.php и вставляем в конец следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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 просмотров"; } 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); } } |
Не закрывая файла, сразу же после этого кода вставляем вот этот:
1 2 3 4 5 6 7 8 9 10 11 |
add_filter('manage_posts_columns', 'posts_column_views'); add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2); function posts_column_views($defaults){ $defaults['post_views'] = __('просмотров'); return $defaults; } function posts_custom_column_views($column_name, $id){ if($column_name === 'post_views'){ echo getPostViews(get_the_ID()); } } |
Объясняю: первый код состоит из 2-х частей: первая считает количество просмотров, вторая дает возможность вывести это количество где-либо. Второй же код вставляет в «Консоль» -> «Записи» еще один столбец "просмотры".
Уже вставив эти 2 кода, Вы можете увидеть этот столбец, однако там постоянно будут показываться нули.
Теперь открываем файл single.php, как Вы помните, он отвечает за отдельные статьи. Вставляем в него следующие коды:
1 |
<?php setPostViews(get_the_ID()); ?> |
Этот код подсчитывает количество просмотров. Первый делал возможным сам подсчет, а этот уже непосредственно считает. Если Вы хотите еще и выводить просмотры страниц, тогда вставляйте данный код не только в single.php, но и в page.php.
1 |
<?php echo getPostViews(get_the_ID()); ?> |
А этот код вставляется туда, где Вы хотите, чтобы выводились цифры (кол-во просмотров). Если не хотите, чтобы они выводились где-то, кроме админки, тогда не вставляйте данный код. Лично я его не вставлял.
Если у Вас все работает, то отлично! Если же выводится белый экран, значит ошибка. Кстати, блоги на денвере всегда сообщают об ошибке, там нет белого экрана. Там обязательно пишут, что ошибка в такой то строке, такого-то файла. В следующей статье мы сделаем возможным отображение такого окна с ошибками на хостинге!
Вариант 2. Выводится ошибка
Если же выводится ошибка, или простой белый экран, то советую скинуть шаблон на Ваш тестовый сайт на денвере, и посмотреть, собственно, где именно лежит ошибка.
У меня выдало следующее:
То, что я выделил - является ключом к решению проблемы. Переводя дословно, тут говорится: "невозможно транслировать (заставить работать) код getPostViews, так как он уже работает, и прописан на 257-й строке в файле functions.php.
Вот эта проблема касается всех обладателей красивых, функциональных шаблонов. Решение простое - удалить весь первый код и все.
Так же, в моем шаблоне и в файле single.php был прописан заранее код:
1 |
<?php setPostViews(get_the_ID()); ?> |
Что также вызвало ошибку. Я его просто удалил. И вуаля - все работает на пятерку! Теперь перейдите в «Консоль» -> «Записи», видите новый столбец? Вот как он выглядит:
Ну вот собственно и все! Если возникнут какие-либо проблемы или вопросы - пишите в комментариях, с радостью отвечу!
На этом у меня все, до скорых встреч на WPguru.ru!
Комментарии