Здравствуйте, уважаемые друзья и читатели – Sozdaiblog.ru!
Надеюсь, что Вы хорошо проводите или уже провели Новогодние и Рождественские праздники.
Не буду Вас огорчать, но рано или поздно всё равно придётся прятать своё праздничное настроение в тёмный угол и выходить на работу.
Конечно же, всем будет лень, но, что бы не расслабляться я Вас немного простимулирую показав, как в любом месте Вашего блога вывести блок популярных записей по количеству их просмотров.
Буквально перед Новым Годом я опубликовал пост, в котором повествовал о том, как сделать счётчик количества просмотров каждой статьи.
Так вот, в нём я упомянул о том, что для продвинутых Веб-мастеров счётчик количества просмотров страницы является определённым инструментом, который именно сейчас нам и пригодится.
Если Вы не поняли, о чём я хочу сказать, то говорю прямо, чтобы вывести блок популярных записей по количеству их просмотров необходимо сначала установить счётчик, который будет их подсчитывать.
Затем, открываем для редактирования файл functions.php, который должен находиться практически у всех в папке с активной темой оформления WordPress и в самом низу (часто перед последним тегом ?>) вставляем следующий код:
/**Вывод популярных постов по количеству просмотров ------------------------------------- Параметры передаваемые функции (в скобках дефолтное значение): num (10) - количество постов. key (views) - ключ произвольного поля, по значениям которого будет проходить выборка. order (DESC) - порядок вывода записей. Чтобы вывести сначала менее просматириваемые устанавливаем order=1 format(0) - Формат выводимых ссылок. По дефолту такой: ({a}{title}{/a}). Можно использовать, например, такой: {date:j.M.Y} - {a}{title}{/a} ({views}, {comments}). days(0) - число последних дней, записи которых нужно вывести по количеству просмотров. Если указать год (2011,2010), то будут отбираться популярные записи за этот год. cache (0) - использовать кэш или нет. Варианты 1 - кэширование включено, 0 - выключено (по дефолту). echo (1) - выводить на экран или нет. Варианты 1 - выводить (по дефолту), 0 - вернуть для обработки (return). Пример вызова: kama_get_most_viewed("num=5 &key=views &cache=1 &format={a}{title}{/a} - {date:j.M.Y} ({views}) ({comments})"); */ function sozdaiblog_get_most_viewed($args=''){ parse_str($args, $i); $num = isset($i['num']) ? $i['num']:4; $key = isset($i['key']) ? $i['key']:'views'; $order = isset($i['order']) ? 'ASC':'DESC'; $cache = isset($i['cache']) ? 1:0; $days = isset($i['days']) ? (int)$i['days']:0; $echo = isset($i['echo']) ? 0:1; $format = isset($i['format']) ? stripslashes($i['format']):0; global $wpdb,$post; $cur_postID = $post->ID; if( $cache ){ $cache_key = (string) md5( __FUNCTION__ . serialize($args) ); if ( $cache_out = wp_cache_get($cache_key) ){ //получаем и отдаем кеш если он есть if ($echo) return print($cache_out); else return $cache_out; } } if( $days ){ $AND_days = "AND post_date > CURDATE() - INTERVAL $days DAY"; if( strlen($days)==4 ) $AND_days = "AND YEAR(post_date)=" . $days; } $sql = "SELECT p.ID, p.post_title, p.post_date, p.guid, p.comment_count, (pm.meta_value+0) AS views FROM $wpdb->posts p LEFT JOIN $wpdb->postmeta pm ON (pm.post_id = p.ID) WHERE pm.meta_key = '$key' $AND_days AND p.post_type = 'post' AND p.post_status = 'publish' ORDER BY views $order LIMIT $num"; $results = $wpdb->get_results($sql); if( !$results ) return false; $out= ''; preg_match( '!{date:(.*?)}!', $format, $date_m ); foreach( $results as $pst ){ $x == 'li1' ? $x = 'li2' : $x = 'li1'; if ( (int)$pst->ID == (int)$cur_postID ) $x .= " current-item"; $Title = $pst->post_title; $a1 = "<a href='". get_permalink($pst->ID) ."' title='$Title'>"; $a2 = "</a>"; $comments = $pst->comment_count; $views = $pst->views; if( $format ){ $date = apply_filters('the_time', mysql2date($date_m[1],$pst->post_date)); $Sformat = str_replace ($date_m[0], $date, $format); $Sformat = str_replace(array('{a}','{title}','{/a}','{comments}','{views}'), array($a1,$Title,$a2,$comments,$views), $Sformat); } else $Sformat = $a1.$Title.$a2; $img = has_post_thumbnail($pst->ID) ? get_the_post_thumbnail($pst->ID) : sozdaiblog_thumb_img("post_id=$pst->ID"); $out .= "<div class='ifk'><a href='". get_permalink($pst->ID) ."'>". $img ."</a>$Sformat</div>"; } if( $cache ) wp_cache_add($cache_key, $out); if( $echo ) return print $out; else return $out; } ?>
После этих манипуляций выбираем место, где мы хотели бы видеть наш блок популярных записей (я выбираю sidebar.php) и вставляем туда вот такой кусок кода:
<?php sozdaiblog_get_most_viewed("num=5"); ?>
Закончив вставку кода и сохранившись, Вы сможете наблюдать появившийся блок из ссылок самых просматриваемых постов.
Вся настройка необходимого функционала и количества выводимых постов описана в начале первого кода.
Ещё хотелось бы упомянуть про то, что если на Вашем блоге предусмотрено отображение миниатюр для каждой отдельной записи, то и в этом блоке они тоже будут выводиться.
Если же у Вас нет миниатюр, то о том, как их сделать читайте тут.
Изначально всё будет выглядеть не очень красиво, так как необходимо настроить подходящие под Вашу тему CSS стили.
От себя могу дать небольшой кусок кода, который хоть как-то приведёт Ваш блок популярных записей в более или менее человеческий вид (вставляется в style.css):
.ifk { padding: 18px; font-family: sans-serif; font-style: italic; text-align: center; } .ifk a{ color: #21759B; text-decoration: none; } .ifk a:hover{ color: #0f3647; } .ifk a:hover img { opacity:0.8; } .ifk img { border-radius: 4px 4px 4px 4px; }
Те, кто сделал всё правильно, получат результат, как на сайте — video-for-people.ru.
В любой момент Вы можете настроить всё по своему вкусу, добавив собственные стили и изменив необходимые функции.
На сегодня у меня всё.
Всем хорошего настроения и до новых постов.
С уважением, Денис Черников!
Что-то с этим скриптом у меня ничего не получилось…
Значит, что-то пропустили или Ваша тема ничего не поддерживает!
2022 – там, где отображается адресной строке Вашего сайта, ищем папку wp-content/themes/название_темы/functions.php”.
Внутри этого файла находим функцию с именем “mytheme_setup” и добавляем в неё следующий код:
function set_post_views($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);
}
}
function get_post_views($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 posts_column_views($defaults){
$defaults[‘post_views’] = __(‘Просмотры’);
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if($column_name === ‘post_views’){
echo get_post_views(get_the_ID());
}
}
add_filter(‘manage_posts_columns’, ‘posts_column_views’);
add_action(‘manage_posts_custom_column’, ‘posts_custom_column_views’,5,2);
Hi everyone! I hope you all had a wonderful New Year and Christmas holidays. Unfortunately, we all have to eventually put away our festive mood and get back to work. I know it can be difficult to find motivation, but today I will show you how to display a popular posts block on your blog based on the number of views.
Just before New Year’s, I published a post on how to create a view counter for each article. In that post, I mentioned that for advanced webmasters, a view counter is a useful tool that we will need now.
If you didn’t understand what I meant, let me explain. To display a popular posts block based on the number of views, we first need to install a counter that will track the views. Then, we open the functions.php file for editing, which should be located in the folder with our active theme.