Всем привет! Не так давно, один из читателей блога seo-mayak.com попросил меня рассказать, как вывести популярные записи в сайдбаре без плагина. Этим мы сегодня и займемся.
Наверное вы заметили у меня в сайдбаре блок «Популярное на блоге», конечно плагином там и не пахнет, все сделано средствами самого обычного HTML.
Это наверное самый простой способ вывода популярных записей на WordPress, но он на мой взгляд имеет ряд плюсов, к которым я вернусь чуть позже.
Конечно есть и другие решения данной задачи, например, вывод популярных записей по количеству комментариев или по количеству просмотров. Дочитайте статью до конца и Вы также узнаете как это делается.
Итак, зачем вообще нужен список популярных записей? Дело в том, что пресловутый поведенческий фактор все сильнее влияет на позиции сайта в поисковой выдаче и все больше поисковых систем используют ПФ в своих алгоритмах.
Так что не лишнем бы было помочь посетителю добраться до самых интересных, полезных и просто читаемых записей вашего ресурса.
Конечно существует масса разных плагинов, предназначенных для вывода популярных записей, как с миниатюрами, так и без и по традиции я перечислю некоторые их них.
Плагин WP-PostViews. Я использовал этот плагин на своем кулинарном блоге. Довольно известный плагин, который рассчитывает популярность статьи на основе количества просмотров. Большой недостаток — это отсутствие миниатюр.
Плагин Featured Posts with thumbnails. Более мощный функционал, наличие миниатюр, но есть и минус. Плагин определяет первое изображения в статье и сжимает его до миниатюры с помощью скрипта timthumb.php, что создает не хилую нагрузку на сервер.
Я понимаю, что новичкам будет проще использовать один из плагинов, чем рыться в «непонятных» файлах шаблона, но еще раз всех предупреждаю:
Пожалуй начну урок с самого простого способа вывода популярных записей на WordPress. Поехали!
Как вывести популярные записи в сайдбаре с помощью HTML
Данные способ можно смело назвать ручной работой, так как выбор статей для блока производится непосредственно Вами и все ссылки проставляются ручками. Но зато есть существенные плюсы:
Плюс №1. Возможность изначально сделать миниатюры нужного размера, т.е. исключить ее сжатие, так сказать, на лету, о чем я писал в статье про вывод блока похожих записей.
Плюс №2. Возможность использовать миниатюры, созданные CMS WordPress.
Плюс №3. Для блока можно выбрать совершенно любую статью, не опираясь на количество комментариев или просмотров.
Плюс №4. Для ссылки можно составить совершенно любой анкор, отличный от заголовка статьи, что улучшит анкор-лист проекта.
Плюс №5. Чистый HTML позволит минимизировать нагрузку на сервер.
Итак, для начала надо определиться, как будет выглядеть наш блок популярных записей. Понятно, что если он будет располагаться в сайдбаре, то сильно большим его делать не стоит. Предлагаю два варианта.
Вариант №1. Миниатюра слева, заголовок-ссылка справа.
Вариант №2. Миниатюра сверху, заголовок-ссылка снизу.
Но ведь можно сделать миниатюру ссылкой и вообще обойтись без заголовка?
Можно конечно, но тогда пользователь может не понять о чем тот или иной материал и перехода не последует. Но если дать волю фантазии, то заголовок можно придумать очень даже завлекательный, так сказать, сыграть на человеческом любопытстве.
Теперь, когда мы определились со структурой блока, приступаем к созданию HTML таблицы. Таблицы можно создавать в любом текстовом редакторе. Лично я для этих целей использую редактор WordPress.
Итак, рассмотрим первый вариант — миниатюра слева, заголовок-ссылка справа. Структура таблицы должна выглядеть так:
<table> <tbody> <tr> <td>Ячейка №1</td> </tr> <tr> <td>Ячейка №2</td> </tr> <tr> <td>Ячейка №3</td> </tr> <tr> <td>Ячейка №4</td> </tr> <tr> <td>Ячейка №5</td> </tr> </tbody> </table>
Как Вы поняли, мы создали самую простейшую таблицу, шириной в одну ячейку и высотой в пять ячеек.
Ячейка №1 |
Ячейка №2 |
Ячейка №3 |
Ячейка №4 |
Ячейка №5 |
Теперь нам надо в каждую ячейку поместить миниатюру и заголовок. Выглядеть это должно так:
<a href="Ссылка на статью"><img title="Описание на русском" alt="Описание английскими символами (транслитерация)" src="Путь до миниатюры" /></a><a href="Ссылка на статью">Заголовок статьи</a>
Возникает резонный вопрос, а зачем вообще нужна таблица?
Дело в том, что без таблицы изображения и заголовки будут налазить друг на друга и вообще будет твориться черт знает что. Вот наглядная иллюстрация:
С помощью таблицы мы устанавливаем невидимые границы, за которые уже ничего «выползать» не будет.
Как видите, таблица успешно расставила миниатюры, но заголовки все равно смотрятся не так как надо.
Чтобы исправить положение дел, зададим класс для нашей таблицы. К тегу table дописываем следующее:
<table class="popul_post">
Теперь у нас есть возможность применить стили и довести внешний вид блока популярных записей до ума.
.popul_post img { float: left; /*Выравниваем текст по левому краю*/ margin: 5px 13px 0 0px; /*Внешние отступы*/ background: #FFFFFF; /*Цвет фона*/ border: 1px solid #D0D0BB; /*Задаем толщину,вид и цвет рамки*/ border-radius: 5px; /*Закругляем края миниатюры*/ box-shadow: 0 0 5px #666666; /*Задаем тень для изображения*/ } .popul_post a{ color: #000; /*Задаем цвет текста для ссылок*/ }
Ну вот совсем другое дело:
Еще раз хочу повторить:
Конечно, для блока популярных записей можно использовать миниатюры, которые WordPress создает автоматически, но тогда надо правильно указать пути. Например, вот такое название у миниатюры с моего блога, созданной WordPress с изображения для статьи — Символы которых нет на клавиатуре.
cimvoly-klaviatury1-150×111.jpg
Именно цифры (размеры) 150х111 отличают название миниатюры от названия основного изображения. У вас конечно могут быть другие цифры. Подробно о том, как настроить размеры миниатюр при их автоматическом создании на WordPress, вы можете почитать тут.
В моем случаи путь до миниатюры будет выглядеть так:
/wp-content/uploads/2012/12/cimvoly-klaviatury1-150×111.jpg
Надеюсь понятно.
Переходим ко второму варианту — миниатюра сверху, заголовок-ссылка снизу.
Создаем таблицу с такой структурой:
<table> <tbody> <tr> <td>Ячейка №1</td> <td>Ячейка №2</td> </tr> <tr> <td>Ячейка №3</td> <td>Ячейка №4</td> </tr> <tr> <td>Ячейка №5</td> <td>Ячейка №6</td> </tr> <tr> <td>Ячейка №7</td> <td>Ячейка №8</td> </tr> <tr> <td>Ячейка №9</td> <td>Ячейка №10</td> </tr> </tbody> </table>
Данная таблица в ширину имеет две ячейке, а в высоту пять ячеек.
Ячейка №1 | Ячейка №2 |
Ячейка №3 | Ячейка №4 |
Ячейка №5 | Ячейка №6 |
Ячейка №7 | Ячейка №8 |
Ячейка №9 | Ячейка №10 |
Теперь во все ячейки вставляем миниатюры и заголовки, точно также, как мы это делали в первом варианте. Единственное, что я бы хотел посоветовать — это не делайте во-втором варианте слишком длинных заголовков. Например:
По-моему гораздо лучше, когда популярные записи выглядят так:
Вот в принципе и все. Неправда ли просто? Останется скопировать код и вставить его в виджет, а лучше прямо в файл sidebar.php, чтобы не тормозить загрузку страниц.
Кстати, скоро я планирую написать серию статей, посвященных скорости загрузки страниц, поэтому советую подписаться на обновления блога.
Ну что же делать, когда стоит задача вывести в сайдбар самые комментируемые посты или статьи с наибольшим количеством просмотров?
В этом случаи не обойтись без известного и для многих непонятного языка PHP.
Выводим популярные посты с миниатюрами по количеству комментариев
Чтобы вывести популярные посты по количеству комментариев, нижеприведенный код надо вставить в файл sidebar.php в нужное место.
<div class="popul-post"> <h3>Самые популярные статьи</h3> <?php $posts_qty = 5; $period = 180; $interval = date('Y-m-d', strtotime("-$period days")); $result = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' AND post_date > '$interval' ORDER BY comment_count DESC LIMIT 0 , $posts_qty"); foreach ($result as $post) : setup_postdata($post); ?> <table><tr><td><a onclick="return !window.open(this.href)" href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumbnail'); ?><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>(<?php comments_number('0', '1', '%'); ?>)</td></tr></table> <?php endforeach; ?> </div>
Теперь давайте разберемся, что в коде можно менять.
$posts_qty = 5;
Цифра 5 в переменной $posts_qty — это количество популярных статей в блоке. Ставим желаемое количество.
$period = 180;
Цифра 180 в переменной $period — это интервал в днях (начиная с текущей даты). Выбираются наиболее комметируемые статьи, опубликованные за данный промежуток времени.
<table><tr><td><a onclick="return !window.open(this.href)" href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumbnail'); ?></a><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>(<?php comments_number('0', '1', '%'); ?>)</td></tr></table>
Данный отрезок кода выводит изображения и заголовки постов. Как видите я здесь также использовал таблицу, чтобы элементы не разбегались. Что мы тут можем изменить…
Кто не хочет, чтобы ссылки открывались в новом окне, удалите следующий участок кода:
onclick="return !window.open(this.href)"
Если Вы не хотите, чтобы показывалось количество комментариев, уберите из кода:
(<?php comments_number('0', '1', '%'); ?>)
Для тех, кому необходимо подкорректировать размер миниатюр, надо заменить:
<?php the_post_thumbnail('thumbnail'); ?>
на:
<?php the_post_thumbnail(array(140,100)); ?>
Где 140,100 — желаемый размер миниатюры.
Остальное трогать не надо.
Стили для блока можно применить те же, что я привел выше. Вот что у нас должно получится:
Важно! По умолчанию в WordPress PHP-коды не выполняются в виджетах! Ситуацию исправит специальная функция.
Выводим популярные статьи с миниатюрами по количеству просмотров
Чтобы вывести популярные записи по количеству просмотров, нам потребуется создать счетчик просмотров. Для этот открываем для редактирования файл functions.php и в самый низ перед знаком ?> вставляем следующий код:
function mayakPostViews($post_ID) { $count_key = 'post_views_count'; $count = get_post_meta($post_ID, $count_key, true); if($count == ''){ $count = 0; delete_post_meta($post_ID, $count_key); add_post_meta($post_ID, $count_key, '0'); return $count . ' Просмотр'; }else{ $count++; update_post_meta($post_ID, $count_key, $count); if($count == '1'){ return $count . ' Просмотр'; } else { return $count . ' Просмотров'; } } }
Теперь нам надо вызвать счетчик в нужном месте. Для этого в файл single.php ищем что-то похожее на такую строчку:
<?php the_date(); ?> автор: <?php the_author() ?> <?php edit_post_link(__('Edit This')); ?>
В самый конец этой строки добавляем код вызова счетчика:
<?php if(function_exists('mayakPostViews')) { echo mayakPostViews(get_the_ID()); }?>
Должно получится примерно следующее:
Это еще не все! Теперь нам надо вывести популярные записи в сайдбаре. Открываем файл sidebar.php и в нужное место вставляем такой код:
<div class="popul"> <h3>Популярные статьи</h3> <table> <?php $args = array( 'posts_per_page' => 5, 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ); query_posts($args); while ( have_posts() ) : the_post(); ?> <tr><td><a onclick="return !window.open(this.href)" href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumbnail'); ?></a><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></td></tr> <?php endwhile; wp_reset_query(); ?> </table> </div>
В этом коде стоит обратить Ваше внимание на один участок:
'posts_per_page' => 5,
Где цифра 5 — это количество выводимых записей в блоке.
Стили остаются те же.
Вот теперь все. Должен сказать, что счетчик просмотров начинает свою работу с момента его установки, поэтому надо немного подождать, чтобы блок популярных записей заработал как надо.
Вот как у нас должно получится:
Хочу заметить, что данные варианты вывода блока популярных записей в сайдбар реализованы без использования плагинов. Еще предлагаю вам почитать про использование миниатюр на главной странице. Если что-то непонятно, готов выслушать Вас в комментариях.
На сегодня у меня все. Как Вам статья?
C уважением, Виталий Кириллов
Отличная статья, простым и доступным языком описано.
Кое, что взял на заметку, удобно делать свои тизерные блоки с обычными новостями
Спасибо Андрей!
Спасибо, Виталий огромное! как всегда, все просто и понятно! Можно теперь без плагина)
Пожалуйста Анна, пользуйтесь!
Статья отличная! Может, что-то попробую. Со счетчиком способ особенно понравился.
Спасибо Саша за высокую оценку!
У меня сайдбар узкий 180 пикс. и подпись чтоб внизу была, подскажите пожалуйста что поменять в коде нужно.
Анна, какой из вариантов вы имеете в виду?
Виталий! Не в тему статьи… С Новым годом!
Спасибо Александр! Вас тоже с Новым Годом!
Виталий, поздравляю Вас с Новым годом! Счастья, радости и успехов в Новом году! А сайту — новых достижений!!!
Спасибо Валентина!
Виталий, поздравляю с 2014-м!
Желаю тебе в Новом году сибирского здоровья, много солнечных дней, творческих успехов и оригинального креатива, радостных и счастливых событий, удачи в делах и на отдыхе!
Давненько у тебя в гостях не был. Очень интересные материалы у тебя появились на сайте!
Буду понемногу внедрять их и у себя в блоге.
Спасибо!
И вам спасибо Виталий!
Виталий, я хочу спросить по поводу этого плагина Featured Posts with thumbnails, если у меня первое изображение в статье задано как миниатюра — нагрузки на сервер не будет создаваться этим плагином? Пробовала разобраться с кодами, но это для меня сильно сложно пока…
Здравствуйте Анна, рад снова Вас видеть на блоге!
Если размер заданной миниатюры совпадает с размером миниатюры выводимой плагином, то нагрузка будет меньше.
Подскажите как сделать что б в табличке миниатюры менялись , загружались новые картинки с паузой — по очереди ) ??
Дмитрий, попробуйте встроить в ячейку слайдер)
Огромное спасибо! Действительно без плагина довольно таки неплохо получается и все намного проще чем я думал.
Я для вывода популярных статей использую последний предложенный Вами способ (по количеству просмотров). Все бы было хорошо, если бы не одно но… Выводятся записи популярные за все время, а мне надо за последние 7 дней, например. А получается, с этим кодом невозможно сделать такую выборку, т.к. мы в БД не сохраняем дату просмотра. Единственная мысль приходит в голову, это каждую неделю обнулять счетчик. Но это что-то не то…
Может, у Вас есть какие-то идеи на этот счет? Кстати, везде, где я видела эту тему, людей интересовал этот вопрос. Но никто из админов на него не мог ответить. Может быть, Вы будете первым?)
Наталья, задача сложная, но как мне кажется, вполне решаемая. Как я понимаю, надо создать отдельную таблицу в базе данных, в которою будет заноситься статистика просмотров, по датам. Например, можно сделать так, чтобы статистика собирается за последнюю неделю, т.е. устроить все так, чтобы статистика не накапливалась, а постоянно обновлялась.
Надо провести кучу экспериментов, чтобы подтвердить «право на жизнь» сей догадки.
вот и я о том же) задача сложная и мороки много. Не знаю, стоит ли игра свеч, чтобы возиться с ней. Жаль, что до сих пор никто не выложил работающий код.
Вот и о том же.
Спасибо большое, очень пригодилась функция вывода самых комментируемых постов. Пришлось немного преобразовать ее, чтобы вместо thumbnail выводились прикрепленные картинки, и все заработало как надо!
Все хорошо, только не пойму почему изображения (миниатюры) обрезаются, а не уменьшаются в масштабе. И правильно ли я понял, что они автоматически обрезаются до размера 150 x 150 ??
Андрей, когда вы загружали картинку на сайт, то миниатюра автоматически создалась исходя из настроек (Настройки -> Медиафайлы), а там по умолчанию стоят размеры 150х150. Если задать иные пропорции, то можно добиться необрезанных миниатюр.
Здравствуйте! Скажите пожалуйста в каком файле задать класс и применить стиль? Или я что то не так понял? Или нужно уже готовый какой то файл с таблицей загрузить на сервер? Извините за столь глупые вопросы, новичек просто еще в этом деле. Спасибо!
Все коды можно вставлять в виджет, а стили прописываются в файле style.css
Добрый день! Подскажите, а как выйти из ситуации, если миниатюры изначально не было созданы? У меня на кулинарном сайте для миниатюр подходит только одно фото в конце статьи, с готовым блюдом, как можно решить этот вопрос? Заранее спасибо.
Благодарю. Код рабочий применил у себя на сайте. Вывел лучшие записи.
С миниатюрами разобрался, пришлось перезалить все нужные фото. Больше всего из предложенного подходит, Популярные по кол-ву просмотров, но если бы вы подсказали, как сделать Случайные, было бы вообще замечательно.
Виталий, добрый день! Вы не подскажите, вставил код в виджет в боковой сайдбар, ещё вчера вечером, но там до сих пор отображается вот это((( 5, ‘meta_key’ => ‘post_views_count’, ‘orderby’ => ‘meta_value_num’, ‘order’ => ‘DESC’ ); query_posts($args); while ( have_posts() ) : the_post(); ?>
Что не так? Счётчик работает, т.е. по идее должно всё работать…Это популярные записи по кол-ву просмотров.
И опять я сам справился, ответ на вопрос из гугла, привёл к вам же. Кстати этот момент, могли бы дописать в статье)))
Вывод PHP-кода через виджеты WordPress без плагина. Ещё раз спасибо, пошёл играться со стилями.
Ещё раз пробежался, всё такие это есть в статье, извините)))
А вот стили почему то не работают, что с ними, что без них, ничего не меняется((
Я рад, что Вы сами разобрались, а стили вещь такая, капризная, но если долго мучатся, обязательно получится!
Нашёл проблему, если вдруг вам будет интересно. Каждому виджету надо задать id, и уже к конкретному виджету прописать стили.
Спасибо за замечательные статьи! По данной статье у меня возник вопрос, возможно ли вывести в сайдбар блок миниатур, состоящий из случайных записей рубрик или меток, такой же как предлагается вами в посте «Как вывести похожие записи с миниатюрами на WordPress без плагина». Т.е. в сайдбар мне нужно вывести случайные, меняющиеся записи с миниатюрами.
Олеся, в коде вывода статей с миниатюрами по количеству просмотров, строчке:
Вместо:
Вставьте:
И удалите такой участок кода:
Функцию подсчета количества просмотров можно не использовать.
Вот такой код вставляю в виджет
<div class="popul">
<h3>Популярные статьи</h3>
<ul>
<?php
$args = array( 'posts_per_page' => 5, 'orderby' => 'rand', 'order' => 'DESC' );
query_posts($args);
while ( have_posts() ) : the_post();
?>
<table><tr><td><a onclick="return !window.open(this.href)" href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumbnail'); ?></a><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></td></tr></table>
<?php endwhile; wp_reset_query(); ?>
</ul>
</div>
Олеся,У Вас возможно виджеты не настроены на обработку php кодов. Настройте их по этой статье
Код рабочий!
Виталий помогите пожалуйста: не могу разобраться с ss, сколько мучился, не получается. Вывел записи в сайдбар по количеству просмотров, в одну колонку (получается первый вариант). Подскажите пожалуйста, как сделать чтобы текст был внизу миниатюры, а не сбоку?
Василий, я за Вас CSS не выучу! Я не увидел в Вашем файле css ни одного значения для класса .popul_post, Вы в каком месте мучились?
В общем решил проблему (чтобы текст был внизу миниатюры, а не сбоку): взял отдельно текст в div, прописал стиль и получилось! Моей радости нет предела!
Просто я учусь еще, и в основном методом тыка..
А статья ваша очень пригодилась, спасибо.
Виталий, спасибо, теперь все заработало!
Добрый день!
Спасибо за полезную статью, код очень пригодился! (тот что выводит по количеству просмотров)
Подскажите пожалуйста, что нужно дописать в коде, чтобы выводил не только популярные записи, но и популярные страницы.
Спасибо.
Виталий, спасибо!!! плагин который у меня занимался популярными и похожими статьями закончил свою работу 31 декабря… и я как раз искала чем его заменить, но ваша идея без плагина мне ещё больше нравится! особенно, потому что в последнее время заметила, что сайт стал дольше загружаться, это ещё предстоит проверить…
очень понравилось, что вы прямо рядом с кодами пишите по-русски расшифровку, что эти значки обозначают, так и выучить можно постепенно 🙂 здорово!!!
Благодарю!!!!!!!!!!!!!!
Здравствуйте.
Необходима Ваша помощь. У меня сайт на ворд пресс и в сайд баре просто новые темы(дата и текст) помогите сделать так что бы с текстом была еще и картинка. Я могу добавлять картинки к каждой теме в сайтбаре, но это занимает время! Надо так что бы автоматически — указал какие темы выводить те темы и выводятся только ещё и с картинками.
Кто сможет помочь пишите
wetl009@mail.ru
Спасибо.
Здравствуйте,Виталий.Сделала все как у вас написано,записи с миниатюрами отображаются на всех страницах,кроме главной.С чем это может быть связано?
Отличная статья, очень все понятно. В виджеты поставила код для вывода по счетчику, не отображаются миниатюры, а только ради них старалась (вывод миниатюр подключен). Как быть?
Оказывается, все проще, чем я думала. Благодаря Вашей подробной статье разобралась. Осталось доработать стили. Спасибо, Виталий!
А вот у меня руки кривые ничего не получилось, наоборот вышла ошибка пропал фон сайдбара, но все по порядку:
Из статьи /sozdanie-bloga/plaginy-wordpress/vypolnenie-php-koda-v-vidzhetax-wordpress-bez-plagina.html
Вствил в файл function.php такой код:
function mayak_widget_php($widget_content) {
if (strpos($widget_content, » . $widget_content);
$widget_content = ob_get_contents();
ob_end_clean();
}
return $widget_content;
}
add_filter(‘widget_text’, ‘mayak_widget_php’, 99);
В виджет:
Самые популярные статьи
get_results(«SELECT * FROM $wpdb->posts WHERE post_type = ‘post’ AND post_status = ‘publish’ AND post_date > ‘$interval’ ORDER BY comment_count DESC LIMIT 0 , $posts_qty»);
foreach ($result as $post) : setup_postdata($post);
?>
<a onclick="return !window.open(this.href)" href="»><a href="»>()
Часть кода в предыдущем сообщение не отразилась
Игорь, фон сайдбара может пропасть по многим причинам и не могу сходу поставить правильный диагноз.
Отличная статья, все правильно написано. Сделал благодаря вашим статьям себе виджет с миниатюрами.
А как сделать так, чтобы выводились статьи в случайном порядке и в 3 колонки? Если создать таблицу, то во всех ячейка выводится одинаковая запись…
Хотя уже все — разобрался… ))
Если кому нужен код, то вот. Выводит в 3 строки и 3 столбца статьи в случайном порядке. Пришлось помучаться, чтобы так сделать…
ID;
query_posts(array(‘post_type’ => ‘post’, ‘post_status’ => ‘publish’, ‘orderby’ => ‘rand’, ‘showposts’ => 9, ‘post__not_in’ => array($this_post))); ?>
<a onclick="return !window.open(this.href)" href="»><a onclick="return !window.open(this.href)" href="»>
<a onclick="return !window.open(this.href)" href="»><a onclick="return !window.open(this.href)" href="»>
<a onclick="return !window.open(this.href)" href="»><a onclick="return !window.open(this.href)" href="»>
Когда что то хочу сделать на сайте и ищу в инете, частенько попадаю на Ваш сайт, и из всех выбранных сайтов, на Вашем задерживаюсь больше всего.
Это говорит о том (для меня), что сайт сделан для людей. Все четко и доходчиво объясняется.
Спасибо Вам.
Желаю найвысших позиций в поисковиках.
Есть рекомендация: сделайте кнопочку, типа лайк, и наоборот. Думаю у Вас будет очень много лайков.
Спасибо на добром слове!
Хотел сделать по вашему примеру (по просмотрам). Вот такая ошибка.
Скажите в чем может быть дело?
Parse error: syntax error, unexpected ‘<' in /home/agroflor/agroflora.ru/www/wp-content/themes/aroma/functions.php on line 736
Юрий, это ошибка синтаксиса. Проверьте полностью ли Вы скопировали код.
Спасибо. Уже нашел ошибку.
Вот только что то популярные выводятся не очень реально. Подожду немного. Чтобы набрали реальных просмотров.
А как можно поделится, как выглядит мой вариант?
Кому будет интересно, как выглядит ваш вариант, может перейти по ссылки на ваш сайт с имени комментатора.
Виталий, такой вопрос.
Из ЯМетрики Грибы грузди прямых заходов — 130.
А ваш счетчик, если зайти на эту статью показывает — 26. В чем может быть проблема?
Юрий, я специально проверил счетчик, зайдя ка Вам на страницу с разных источников, со страницы категории и с поиска. Счетчик работает. В чем причина… не могу сказать, посмотрите, что будет завтра.
Здравствуйте! Пыталась установить популярные записи внизу статьи. array() — размер картинки не меняет. Комментарии вордпресс сходят с ума — после любой статьи высвечиваются комментарии последней статьи из популярных…
Вчера пыталась поставить на сайдбар, но даже после установки функции с разрешением PHP, ничего не происходит… Точнее код дальше не выполняется…
Может у меня тема какая-то корявая?
Вполне может быть.
Добрый день. Отличная статья, все доступно и понятно написано, сделал себе раздел популярных статей. Огромное спасибо!
Есть один вопрос, как сделать так чтобы на всех страница в разделе отображалось допустим 10 миниатюр (сейчас так и есть), а на одной странице (разделе) отображалось только три миниатюры.
Заранее спасибо за подсказку.
Здравствуйте Геннадий, точно не могу сказать, а какой вариант Вы применяете?
использую вывод по количеству просмотров
Добрый день, статья супер, спасибо.
возник вопрос, возможно ли исключить некоторые записи из популярных (по количеству просмотров), то есть чтобы некоторые записи не выводились в топ, в не зависимости от количества просмотров.
Заранее спасибо!
уже нашел решение сам, может кому надо будет вот код для исключения некоторых записей по id
function exclude_post($query) {
if ($query->is_home)
{$query->set(‘post__not_in’, array(5255, 6610) );} // id записи (поста)
return $query; }
add_filter(‘pre_get_posts’,’exclude_post’);
Гена я рад , что у Вас все получилось.
Здравствуйте. У меня в принципе код работает (тестирую его пока на локальном компьютере), но вот счетчик всегда прибавляет +2 при просмотре. В чем может быть причина? Вроде бы не загружаю страницу 2 раза… использую счетчик «по количеству просмотров»
Путем экспериментов, частичным удалением кода, нашел причину, но не понимаю как это связано. в абсолютно другом блоке у меня картинка с src=»#». Если вместо решетки вставить что-либо, хоть и пустую строку, то счетчик норм считает. Как вы думаете, как это связано??
Добрый день. Спасибо Виталий за очень полезный материал.
Почти год стоит код в сайдбаре, рандомный со счётчиком, такой вариант очень полезен для молодого сайта. Сейчас же хочется осуществить выдачу популярных статей по рубрикам (для каждой рубрики свои популярные статьи). В программировании не силён совсем, поэтому обращаюсь к Вам Виталий и к другим комментаторам за помощью, как внести изменения в код для решения такой задачи.
Спасибо большое за статью, давно планировал сделать красивый блок с популярными статьями без использования плагина, не хочу грузить свой сайт, он итак что то притормаживать стал в последнее время.
Подписался на новости, будет свободное время, обязательно займусь.
Большое спасибо за такое прекрасное решение!
Не хотелось использовать плагин, но хотелось, чтоб было красиво и заметно.
И с помощью вашего кода — все получилось.
Сразу повысилось количество просмотров на человека и время пребывания на сайте.
Спасибо за ваш труд и знания!
Здравствуйте, в сайдбаре вывела популярные посты с миниатюрами по количеству комментариев. Подскажите что поменять в коде чтобы записи выводились в две колонки.
Здравствуйте Наталья! Надо вместо теги таблицы (table, tr и td) поменять на теги списка (ul, li), затем с помощью стилей можно будет создать две колонки.
Спасибо Виталий, попробую.
Автору блога большое человеческое спасибо.
Не знал о существовании таблицы, с ее помощью с легкостью скорректировал на своем сайте расположение внешних ссылок-картинок на главной странице, а позже запилил боковое меню.
Большой респект и благодарность за просвещение.
Здравствуйте, подскажите пожалуйста, а можно ли сделать, что бы после того как заходишь на одну из страниц представленных в сайдбаре ссылка на эту страницу становилась не активной?
Здравствуйте! Вот статья, по Вашему вопросу.
Сразу видно челок любит свое дело, все расписал и объяснил очень толково, лично у меня не возникло никаких проблем с кодом и его установке, большое спасибо автору блога!
Спасибо, Виталий!
Мне понравилось, все работает 🙂 Случайно нашел то, как вывести количество комментариев. Теперь я приблизился на еще один шаг, по созданию тем для WP.
Здравствуйте.
Подскажите, пожалуйста, можно ли сделать так, чтобы в сайтбаре выводились случайные записи из той рубрики, на странице которой находится читатель?
Здравствуйте. Обеими руками и ногами поддерживаю просьбу!
Еще раз спасибо, Виталий)
Я к вам вернулся с таким вопросом.
Можно сделать так, чтоб популярные записи выводились в слайдере? Если да, то как?
Виктор, готового варианта у меня нет. Поищите решение среди плагинов.
Эх, жаль.
Дело в том, что я учусь верстать темы для WP. Хочу в index.php создать слайдер популярных записей. Ну ничего, буду экспериментировать. 😀 Как только найду решение, постараюсь поделиться.
Добрый день, всё отлично работает, только один вопрос. Как сделать, чтобы в популярных записях не показывалась текущая запись?
Помогите понять, я написала код в редакторе вордпресс, то есть создала черновик новой записи. Поставила код в виджет, в сайдбаре появилась таблица: миниатюры с надписями. Но если вставлять код и стили, то стили так и отображаютя в сайдбаре в виде букв и символов, яубрала стили и оставила только код. Все прекрасно, в сайдбаре поучила анонсы статей.
Мне не понятно, что делать с черновиком, в котором писала код таблицы.(я надеялась написать код, скопировать его, поставить в виджет, а черновик удалить. Но код поставлен, а стили виджет принимать отказывается!)
Я понимаю, что таблице был присвоен класс, а к классу применены стили, но не понимаю, почему код в виджете видит стили, ведь они остались в черновике новой записи, а в виджете размещен только сам код. Может черновик попадает на сервер?
Вы в коментах написали, что стили прописыатся в файле style.css, но я же ничего никуда не прописывала, только написала код и стили в черновик.Я какой-то структурной связи не знаю, подскажите.
Никогда не пишу комментов, но тут не могу удержаться. Спасибо огромное!
Как реализовать пример как у вас на блоге, стоят похожие новости под основной новостью, но через DIV/CSS ? 2 ряда, 4 колонки. Картинка выше, название статьи ниже, чтобы они не уходили за границу
Что у Вас уходит за границу картинки или заголовок?
Виталий, подскажите можно ли как-то убрать вывод текста в статье о том сколько просмотров статьи, нужно чтобы текст этот не отображался?
Здравствуйте, Виталий! Воспользовался этим способом вывода популярного и обратил внимание, что картинки прописываются с «itemprop». У Вас на сайте этого нет. Каким образом Вы исключили добавления этого. Если не секрет конечно.
Здравствуйте! Видимо у Вас SEO плагин выводит элементы микроразметки, надо снять соответствующую галочку.
У меня используется All in One SEO Pack, там сняты галочки на медиафайлы. Дело в том, что я использую всю микроразметку сделаную Вами, включая микроразметку миниатюр. Если я отключаю микроразметку миниатюр, то тогда пропадают в валидаторе и миниатюры. Хотелось бы чтоб остались миниатюры в отображении валидатора, но не индексировались в популярных. Просто не хочется применять плагин популярных статей — там картинки, кстати, не индексируются. Вот каким образом это можно было бы сделать?
К сожалению не получается отделить миниатюры в сайдбаре.
Спасибо, Виталий! Жаль конечно, но я думаю, что это не будет критически определяться роботами как ошибка. Спасибо!
Я еще совсем мало что понимаю, поэтому вопрос, наверняка, дурацкий. Я прописала таблицу в редакторе вордпресс,потом скопировала в виджет и все заработало. Черновик записи я удалила. Прошу очень, объясните, почему все работает, если с виджете только часть кода стоит,(стили, которые описывают размеры, бордюры, отступы, цвет я их же в виджет не ставила, а черновик удалила),Откуда вордпресс знает что было в записи, если я ее удалила?
Спасибо за Ваше творчество. Очень много полезного. Как можно выводить записи из определенной категории? Подскажите куда вставить ID категории. Ещё раз огромное спасибо.
Я вот так вам покажу, а как вставить надеюсь разберетесь.
где 7 — ID поста.
$args = array( 'posts_per_page' => 5, 'meta_key' => 'views', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'cat' => 1);
query_posts($args);
Еще вариант
Еще вопрос есть. Возможно ли сделать проверку ID категории и на основании этого выводить посты из этой категории?
Так ву Вас в коде есть
Где 1 — id категории
Вставляю код в файл «loop-single.php». И автоматом скрипт выводится на главной, что нежелательно. Как запретить его вывод на главной. Спасибо.
Видимо цикл WordPress у Вас выводиться в другом файле.
Спасибо за статью! Подскажите, это адаптивный блок? как он себя поведет под мобильные, под разную ширину экрана?
Галина, нет, он не адаптивный. Но это можно легко исправить
Подскажите как! Что дописать в цсс, что картинки растягивались или сам блок подстраивался под мобильные устройства. Спасибо!
сама разобралась )
Галина, для начала, вам надо было хоть немного выучить CSS и HTML. Потом уже браться за сайтостроение 🙂 В рамках ответов на комментарии, мне не очень удобно вам что-то показать. Советую нажать на мое имя пользователя, или на эту ссылочку, что б перейти на мою страничку в социальных сетях. Постараюсь вам подсказать…
Спасибо! «Хоть немного» я цсс и штмл знаю, поэтому меня не пугает браться за реализацию некоторых идей. Спасибо этой статье и вам, удалось быстро сделать то, что нужно. Адаптивную таблицу делать очень легко, всего лишь парочка строк в цсс и готово
Галина, я думаю, что Вы зря меня благодарите. Это блог Виталия 🙂 А я простой комментатор.
Вот! Вы сами разобрались. Надо было немного покопаться в CSS 😀
понятно )
ну тогда спасибо и вам, просто комментатор, что предложили найти вас в соц.сети, чтобы помочь мне 🙂
Здравствуйте! Подскажите пожалуйста, а как вывести кол-во просмотров в самом списке «Популярных записей»? Ставил тоже самое что и в Single.php, но он соответственно считает просмотры)
Здравствуйте Александр!
Так не получится, ведь количество просмотров считается при заходе на страницу, а сайдбар для всех страниц один.
Здравствуйте! У меня при добавлении таблицы в виджет остается сама таблица, получается что каждая ссылка с картинкой разделена линиями, и по бокам виджета остаются границы таблицы. Как можно сделать ее «невидимой»? Заранее благодарю.
Здравствуйте Владимир!
У вас к таблице применены следующие стили:
Чтобы у таблицы не было рамок, надо оставить следующее:
Подскажите как сделать что бы названия статей были не снизу а с боку. Например справа от картинки.
И еще я такой же блог хочу горизонтальный сделать, как сделать что надписи были четко по центру, под картинкой. А сам блок распологался по центру. Что в стилях надо прописать? Надеюсь вы меня поняли а я правильно выразился.
С уважением. Спасибо за статью
Здравствуйте!
У меня не совсем корректно работает код. То есть, показывается только одна статья, которая была до этого посещена и всё.
Код:
<div class="single-widget">
<h2>Популярные посты</h2>
<div class="popular-post-widget">
<div class="media">
<div class="media-left">
<?php
$posts_qty = 3;
$period = 1;
$interval = date('Y-m-d', strtotime("-$period days"));
$result = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' AND post_date > '$interval' ORDER BY comment_count DESC LIMIT 0 , $posts_qty");
foreach ($result as $post) : setup_postdata($post);
?>
<?php endforeach; ?>
<a onclick="return !window.open(this.data-link)" data-link="<?php the_permalink() ?>"><?php the_post_thumbnail(array(100,100)); ?><a data-link="<?php the_permalink() ?>"><?php the_title(); ?></a>
<?php if(function_exists('mayakPostViews')) { echo mayakPostViews(get_the_ID()); }?>
</div>
<div class="media-body">
<h4 class="media-heading"><a data-link="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
</div>
</div>
</div>
</div>
В связи с чем такое происходит? Что не так пишу?
Добрый день. Хотела сделать популярные записи по вашей статье, но открыв свой сайт в Опере заметила, что боковой сайдбар не активный (меню и баннер показываются, но перейти по ним нельзя). Такая же ситуация в браузере Гугл Хром. В Яндекс Браузере, ИЕ, Мозиле все работает корректно. Не подскажете в чем может быть проблема?
Анастасия, причем тут слайдер, статья про блок популярных записей в сайдбаре.
Я вот думаю стоит делать ПОПУЛЯРНЫЕ ЗАПИСИ справа в сайдбаре или нет?
Что порекомендуете ?
Добрый день. C позволения, хотел бы поделиться своей реализацией без плагина:
codyshop.ru/vyivod-deystvitelno-populyarnyih-zapisey-na-wordpress-bez-plagina/
Действительно хорошее решение. Я сам не сторонних плагинов и вывел все сеткой в едином стиле (пример stroimsami.online). Автору благодарность)
Друзья, есть код сайдбара популярных записей по комментариям. Хочу поделиться, в качестве дополнения к статье.
Виталий, как тут у вас можно PHP скинуть?
Виктор, воспользуйтесь преобразователем, что находится выше формы комментирования.
Можете взять этот вариант (кому интересно) Вставить надо в functions.php :
непонятная статья-куда надо добавить таблицу? и как ссылки записей добавить в таблицу?
Доброго вечера! Подскажите, пожалуйста, что и где необходимо добавить в коде для вывода популярных записей по просмотрам, чтобы выводились популярные записи за последний месяц, например, или за последнюю неделю. заранее благодарна за ответ.
Лора для этого надо поставить счетчик просмотров и данные начнут собираться только с момента установки счетчика.
Виталий, Вы наверное не поняли вопроса. У меня стоит счетчик просмотров, и уже есть вывод популярных записей по количеству просмотров. Но мне надо чтобы эти записи показывались исходя из количества просмотров за неделю или месяц. Не буду же я каждую неделю переустанавливать счетчик? Наверное можно как-то используя переменные «дата» и «месяц» заставить установленный счетчик считать просмотры только последние 7 дней или последние месяц. Вот я и хочу узнать как это можно сделать.
Здравствуйте.
У меня посты выводятся, но почему то, не те, которые имеют наибольшее количество комментариев, а те, которые комментариев не имеют.