Раніше ми вже розглядали як додати блок "Схожі записи" на WordPress сайт и створювали список популярних тегів із зображеннями у стилі Mashable. У цій статті йтиметься про те, як відстежувати і показувати самі популярні пости на сайті без використання будь-яких плагінів для WordPress.
Приклад такого кастомізованого відображення найпопулярніших постів наведено на наступному скріншоті:
Для початку нам треба створити функцію, яка визначатиме кількість переглядів для кожного посту і зберігати це значення в окремому полі для кожного запису. Щоб зробити це, вставте наступний код у файл вашої теми functions.php:
function wpb_set_post_views($postID) { $count_key = 'wpb_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); } } //To keep the count accurate, lets get rid of prefetching remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
Тепер після вставки функції на потрібне місце нам потрібно викликати цю функцію для окремих сторінок із публікаціями. Так функція буде "знати", який з постів вибрати і дати йому найвищу оцінку на основі кількості зібраних переглядів. Для цього наступний код треба помістити в цикл для записів у файлі single.php:
wpb_set_post_views(get_the_ID());
Якщо ви використовуєте дочірню тему або просто хочете полегшити собі завдання, то просто додайте параметр, що відстежує, в заголовок посту за допомогою wp_head. Додайте наступний код до файлу функцій вашої теми під назвою functions.php:
function wpb_track_post_views ($post_id) { if ( !is_single() ) return; if ( empty ( $post_id) ) { global $post; $post_id = $post->ID; } wpb_set_post_views($post_id); } add_action( 'wp_head', 'wpb_track_post_views');
Після додавання коду кожного разу, коли користувач відкриває пост, значення поля, що настроюється, буде оновлюватися.
Примітка: Якщо ви використовуєте кешуючий плагін, цей спосіб за замовчуванням працювати НЕ буде.
Ми використовуємо плагін W3 Total Cacheв ньому є опція під назвою "фрагментоване кешування" (Fragmented Caching). Ви також можете використовувати цей плагін і цю опцію, щоб усе працювало як слід. Ось що треба змінити:
<!-- mfunc wpb_set_post_views($post_id); --><!-- /mfunc -->
Тепер ви можете робити багато різних класних штук на кшталт відображення лічильника переглядів у пості, сортування постів за кількістю переглядів і т.д. Погляньмо на деякі з цих класних можливостей.
Якщо ви бажаєте відображати лічильник переглядів для сторінок постів (часто поряд з числом коментарів до запису або чимось таким), то перше, що вам варто зробити, це додати до файлу теми functions.php наступний код:
function wpb_get_post_views($postID){ $count_key = 'wpb_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 View"; } return $count.' Views'; }
Потім цикл запису файла single.php додайте наступний код:
wpb_get_post_views(get_the_ID());
Якщо ви хочете відсортувати записи за кількістю переглядів, ви можете це легко зробити за допомогою wp_querypost_meta параметра. Простий приклад такого циклу виглядатиме ось так:
<?php $popularpost = new WP_Query( array( 'posts_per_page' => 4, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'wpb_post_views_count', 'order' => 'DESC' ) ); while ( $popularpost->have_posts() ) : $popularpost->the_post(); the_title(); endwhile; ?>
Щоб додати інші параметри WP_Query (Такі, як проміжок часу), скористайтеся рекомендаціями з розділу WP_Query у Codex.
Сподіваємось, ці поради вам допоможуть.
Коментарі до запису: 14
автор, а де з'являться цей витвір?????????? сайдбар футер хедер, ти ж не вказав
Це на ваш розсуд, дивлячись, куди ви вставите код. Можна в кінці кожного запису, можна спочатку кожного запису, можна в сайдбарі.
ось я і не знайшов цей код
як впливає навантаження WP даний спосіб?
Так само, як і будь-який інший плагін) Практично ніяк.
Афтар написав хуйні нам тут
цікава стаття!!!
Підкажіть пліз, куди вставляти код, щоб популярні записи були в кінці кожної статті????
Заздалегідь вдячний!
У single.php після
Велике спасибі, пробуватиму!!!!
Куди вставляти це шматок коду? Десь прочитав що в wp-content.php. але цей метод не працює, просто перестає завантажуватися сайт! Що робити ?
В уроці написано файл functions.php
Добрий день. Підкажіть будь ласка, а як ось тут встановити замість рамномних записів, наприклад, щоб виводилося з категорії під ID6
switch($user_selected_categorie){
case 'random':{
$top_tabs_categorys[$key]['category_name']=__('Random Posts','best-magazine');
$top_tabs_categorys[$key]['query']='orderby=rand&ignore_sticky_posts=1&posts_per_page='.$count_of_posts;
break;
}
КГ/АМ.
Аффтар, написав би хоч як це гівно вивести потім.
Дякую автору, дуже допоміг.