Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
Теми
Уроки
Хакі

Раніше ми вже розглядали як додати блок "Схожі записи" на WordPress сайт и створювали список популярних тегів із зображеннями у стилі Mashable. У цій статті йтиметься про те, як відстежувати і показувати самі популярні пости на сайті без використання будь-яких плагінів для WordPress.

Приклад такого кастомізованого відображення найпопулярніших постів наведено на наступному скріншоті:

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

Як відображати популярні 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.

Сподіваємось, ці поради вам допоможуть.

Джерело:WPBeginner.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, що спеціалізується на створенні сайтів WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 14

Mergen Tundinov:

автор, а де з'являться цей витвір?????????? сайдбар футер хедер, ти ж не вказав

WordPresso:

Це на ваш розсуд, дивлячись, куди ви вставите код. Можна в кінці кожного запису, можна спочатку кожного запису, можна в сайдбарі.

Mergen Tundinov:

ось я і не знайшов цей код

дачник:

як впливає навантаження WP даний спосіб?

WordPresso:

Так само, як і будь-який інший плагін) Практично ніяк.

Женя:

Афтар написав хуйні нам тут

Юрій:

цікава стаття!!!

Підкажіть пліз, куди вставляти код, щоб популярні записи були в кінці кожної статті????
Заздалегідь вдячний!

WPcafe.org:

У single.php після

Юрій:

Велике спасибі, пробуватиму!!!!

Костя:

Куди вставляти це шматок коду? Десь прочитав що в wp-content.php. але цей метод не працює, просто перестає завантажуватися сайт! Що робити ?

WPcafe.org:

В уроці написано файл 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;
}

Ікарус:

КГ/АМ.
Аффтар, написав би хоч як це гівно вивести потім.

Галина:

Дякую автору, дуже допоміг.

Додати коментар або відгук