Функция wp_get_archives для вывода архива блога
Буквально вчера выполнял очередное задание с GoGetLinks и на одной из страниц превысил допустимое число внутренних ссылок. Глянул так на блог что можно было убрать и понял — архив. Хотя, в принципе, конечно, все это затевалось не ради GGL, сам архив я уже давно хочу как-то модернизировать для всех своих блогов, но никак не нахожу времени чтобы покопаться с паре тройке плагинов и найти оптимальный для себя. Если так призадуматься, то пользы от 10-20 ссылок в сайдбаре на архивы блога не особо много, вряд ли кто-то будет изучать информацию, которая вполне вероятно уже не актуальна. К тому же куда более удобно искать посты по wordpress категориям, тегам или поиску. Лично у меня нет желания убирать архив на совсем, пусть себе статьи линкуются, но хотелось бы разместить его на отдельной странице — что-то вроде карты сайта, но по месяцам. Но сегодня не об этом, расскажу о функции wp_get_archives и ее возможностях.
Итак, функция wp_get_archives используется для отображения архива блога по датам. Информация может выводиться в любом месте шаблона. Синтаксис функции следующий:
<?php wp_get_archives( $args ); ?> |
По умолчанию аргумент имеется значения:
<?php $args = array( 'type' => 'monthly', 'limit' => , 'format' => 'html', 'before' => , 'after' => , 'show_post_count' => false, 'echo' => 1 ); ?> |
То есть без каких-либо настроек функция wp_get_archives выводит:
- архив по месяцам
- отображает все доступные ссылки без ограничения в количестве
- выводит архив в формате списка LI
- перед каждой ссылкой ничего не добавляется
- и количество постов за период тоже не показывается
Параметры wordpress функции wp_get_archives могут принимать следующий значения.
type (string) — тип архивных ссылок (дат), которые выводятся:
- yearly — года
- monthly — месяцы (по умолчанию)
- daily — дни
- weekly — недели
- postbypost — посты, отображаемые по дате (используется часто в шаблонах wordpress для вывода списка последних постов блога. Про это я уже как-то рассказывал в статье как отображать последние посты и комментарии блога, популярные статьи. http://tods-blog.com.ua/wordpress/lastpost-comments/
- alpha — в алфавитном порядке, то же самое, что и postbypost, но вместо даты статьи отображаются по алфавиту.
limit — количество записей архива для отображения, по умолчанию выводит все.
format (string) — формат ссылок для списка архива, есть такие варианты:
- html — в виде обычного списка LI (по умолчанию)
- option — в виде выпадающего списка (<select> и <option>)
- link — в виде тегов <link>
- custom — свой вариант использует значения параметров before и after.
before (string) — текст, который отображается перед ссылкой, если вы используете формат отображения.
after (string) — то же самое, что и before, только выводится после ссылки.
show_post_count (boolean) — определяет показывать или нет количество постов в той или иной записи архива. Применимо ко всем типам архива кроме postbypost, может принимать значения:
- 1 (True) — отображать количество постов
- 0 (False) — не отображать (по умолчанию)
echo (boolean) — определяет выводить ли результат функции wp_get_archives или нет
- 1 (True) — по умолчанию выводится
- 0 (False) — не выводить
В своих блогах я несколько раз касался данной тематики и описывал применение функции wp_get_archives. Про последние посты я уже говорил, также можно глянуть статью про список последних сообщений выбранной категории, ну и приведу парочку стандартных примеров.
Выводим архив по месяцам, только последние 12:
<?php wp_get_archives('type=monthly&limit=12'); ?> |
Выводим архив по дням, только последние 15:
<?php wp_get_archives('type=daily&limit=15'); ?> |
Отображаем последние 20 постов:
<?php wp_get_archives('type=postbypost&limit=20&format=custom'); ?> |
Отображаем архив в виде выпадающего списка по месяцам, где для каждого указано число постов:
<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo attribute_escape(__('Select Month')); ?></option> <?php wp_get_archives('type=monthly&format=option&show_post_count=1'); ?> </select> |
Выводим все статьи блога в алфавитном порядке (можно использовать в какой-то степени в качестве карты сайта):
<?php wp_get_archives('type=alpha'); ?> |
Хук widget_archives_args
Если вам нужно изменить параметры базового виджета Архива в WordPress, то можно использовать хук widget_archives_args. Следующий пример позволяет выводить в сайдбаре архив по годам с ограничением числа записей = 7. Добавить код нужно в functions.php.
function filter_widget_archives_args( $args ) { $args['type'] = 'yearly'; $args['limit'] = '7'; return $args; }; add_filter( 'widget_archives_args', 'filter_widget_archives_args', 10, 1 ); |
Вот, в принципе, и все:) Если есть какие-то вопросы, задавайте в комментариях. Лучший способ разобраться в работе функции wp_get_archives попробовать ее на практике.
P.S. Постовой. Для любителей почитать предлагаем интересный проект, где можно скачать электронные книги олнайн. На сайте есть разбиение по жанрам и авторам — искать достаточно легко.
Качественная декоративная косметика, женская и мужская парфюмерия в интернет магазине Makeup, бесплатная доставка по Украине.
комментариев 38 к статье “Функция wp_get_archives для вывода архива блога”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,88 из 7, голосов - 50)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
А не подскажете, как сделать, чтобы в сайдбаре выводились не только несколько последних постов, но и ссылка на более ранние? Чтобы выглядело, как у вас в блоке «последние новости».
Аленка, ссылка на «последние новости» это просто html код, добавленный после вызова функции, плюс ссылка на категорию «новости». Можете посмотреть в коде страницы как это сделано.
Так, а не подскажите как убрать его вообще или чтобы он незаметен был?
andrew87, очень просто — открыть файл шаблона (предположительно sidebar.php), найти и убрать оттуда функцию wp_get_archives. Либо поискать добавленный виджет архивов в виджетах.
Спасибо! Да, через виджет не получится, так как они хоть и работают, но в левом сайдбаре их нет в админке, хоть и можно двигать их на самом сайте.
Подскажите как заменить маркеры в выводе последних постов на время публикации, либо просто добавить спереди к заголовкам время публикации?
Для добавления даты следует использовать вместо функции wp_get_acrhives другую конструкцию, пример кода есть в статье Список последних сообщений выбранной категории — добавляете в код вывод даты и все будет, как нужно.
Извините, а не подскажите , как сделать чтобы отображался вывод архива для конкртеной категории?Например, при нажатии на категорию Новости , должен выводится архив именно для нее. т.е. нужно чтобы, после выбора категории под именем новости ткнув на архив за 2010 вывелись все посты всех подкатегорий входящих только в эту категорию за 2010 год. А выбрав категорию партнеры и нажав на ее архив за 2011 год,вывелись посты только по партнерам за 2011, а не те и те. Жду помощи, спасибо заранее!
Олег, нужно поискать какой-то плагин, я, к сожалению, подсказать не смогу, так как подобного не встречал.
Доброго времени суток! Вопрос к «Админу» и не только… Подскажите, почему у меня на блоге при нажатии на ссылку с архивами в сайтбаре, открывается не страница с архивами за определённый месяц или год,а открывается главная страница. Как можно это исправить.
Наиль, возможно у вас проблема совместимости wordpress 3.1 и Simple Tags либо проблемы с каким-то другим плагином, попробуйте их отключать по очереди и проверить. Возможно также ошибка в htaccess.
Спасибо! Отключая последовательно плагины, выяснил, что всё дело в плагине «Robots Meta». В настройках плагина море всяких галочек, если бы ещё знать какую надо убрать или поставить, чтобы всё работало идеально…
Привет, подскажите пожалуйста где можно найти и подправить код календаря? Проблема в том, что титл имеет значение всех постов за конкретный день… это надо изменить так как текс получается внушительным…
Виталий, честно говоря, не полян вопрос вообще.
наведите на число календаря на моем сайте news-info.net и все поймете =)
идей нет?
Виталий, лучше поставить какой-то специальный плагин. Что касается базового календаря — находите в шаблоне функцию которая его выводит и изучаете ее параметры, думаю, там можно отключить вывод текста.
Здравствуйте
Выпадающий список архивов у меня не получился.
Если я оставляю виджет «архивы» в админке, то удалив в файле sidebar и вставив указанный вами код, я получаю полный список архивов, как было раньше.
Если в админке я убираю виджет «архивы», а в sidebar вставляю указанный вами код, то архивы просто не выводятся.
Помогите разобраться!
Ирина, нужно использовать либо этот код в шаблоне либо виджеты — все зависит от шаблона. Если есть виджеты, то проще через них и никакой код не нужен, если есть желание больше настроек указать, то вставляется функция в файл sidebar.php, но только в ту область, которая не отвечает за виджеты — если не выводятся архивы попробуйте просто текст вывести, возможно также какая-то ошибка при добавлении функции, надо разбираться в общем.
Спасибо, получилось. Убрала виджет «архивы» в админке из правой части сидибара и вставила код в левый сидебар — появился выпадающий список архивов.
Очень нужна помощь! Как отменить архивирование рубрик? На предыдущей теме страница рубрик была такой же, как и главная страница блога. На новой теме страница каждой рубрики в виде архива. А как сделать так, чтоб архивов вообще не было и внешний и функциональный вид страниц рубрик не менялся?
Юлия, архивирование рубрик никак не отменить — это функциональность вордпресс. Есть варианты:
— не выводить рубрики в блоге;
— поставить плагин All in One SEO Pack или Platinum Seo с помощью которых закрыть индексацию архивов дабы они никому не мешали;
— можно подправить файл шаблона archive.php дабы сделать нужный вам формат вывода категорий.
спасибо!
Здравствуйте, а можно ли выводить количество записей за период сразу в теге ? Каким образом можно это сделать?
Артур, выводить в теге? не совсем понял вопрос. Да, код не отобразился. Если речь идет о тегах (tags) то я бы гуглил в том направлении. Функция wp_get_archives больше для архивов, теги здесь вообще никак не играют роли.
Хотя даже для функции wp_tag_cloud() которая выводит теги не нашел отображение количества статей за период. Кстати, еще можно глянуть в админке вордпресс виджеты — там может можно отобразить теги + количество постов. Но оно будет общее, а не за период.
Нет, Вы меня не поняли.
При использовании функции wp_get_archives я получаю на странице список периодов, я задаю им параметры type=monthly&show_post_count=1. Таким образом на странице я буду видеть, например: Февраль 2012 (10). Мне нужно сделать так, чтобы эти (10) были в теге .
Вот как я сделал это с рубриками:
<?php
$data = wp_list_categories('show_count=1&echo=0&title_li=&depth=1&hide_empty=0&orderby=ID');
$data = preg_replace('/\ \((.*)\)/’,’ $1‘,$data);
echo $data;
?>
С архивами так сделать не могу, точнее не понимаю как, может быть вы поможете.
Теги почему-то съедаются.
Вот ссылка на файл с кодом: http://rghost.ru/36714113
Артур, увы, не подскажу почему так происходит. Видимо нужно тестировать дальше код и искать глюк.
подскажите, как вывести посты по месяцам в archive.php только из одной категории?
Sky, точный код не подскажу, вам нужно будет посмотреть если возможность добавить параметр выбора категории в функцию которая выводит архивные посты — там есть что-то такое. Но вообще не уверен, что правильна постановка вопроса — если выводится архив по месяцам, то главным параметром здесь есть дата и именно она будет оцениваться, то есть например просматривая посты за август (ссылка — 2012/08/) здесь нет информации о категории и возможности ее выбрать. Короче говоря, можно в файле отображения архива выбрать одну категорию, которая будет всегда отображаться и для всех архивных страниц.
Помогите, пожалуйста! У меня проблема.. никак сама не могу разрешить. Публикую в постах видео. На главной странице видео без проблем отображается. А когда нажимаешь на рубрику, в которой этот пост находится, то там пост уже без видюшки идет:-((( Текст есть, а видео он режет… Вот не могу понять, где и что нужно подкорректировать.
На главной видео присутствует. А вот тут нет: lr-up.ru/archives/category/other — Вот тут этот пост уже вызван из РУБРИКИ. Как видите, видео в нем нет(