Сен
16
38

Функция 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, бесплатная доставка по Украине.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 6, средний балл: 4,83 из 7)
Загрузка...

категория Категории: Возможности;
теги Теги: , , , , , , , .

комментариев 38 к статье “Функция wp_get_archives для вывода архива блога”

  • Аленка   19.02.2011

    А не подскажете, как сделать, чтобы в сайдбаре выводились не только несколько последних постов, но и ссылка на более ранние? Чтобы выглядело, как у вас в блоке «последние новости».

  • Tod   21.02.2011

    Аленка, ссылка на «последние новости» это просто html код, добавленный после вызова функции, плюс ссылка на категорию «новости». Можете посмотреть в коде страницы как это сделано.

  • andrew87   23.05.2011

    Так, а не подскажите как убрать его вообще или чтобы он незаметен был?

  • Tod   23.05.2011

    andrew87, очень просто — открыть файл шаблона (предположительно sidebar.php), найти и убрать оттуда функцию wp_get_archives. Либо поискать добавленный виджет архивов в виджетах.

  • andrew87   23.05.2011

    Спасибо! Да, через виджет не получится, так как они хоть и работают, но в левом сайдбаре их нет в админке, хоть и можно двигать их на самом сайте.

  • morda   26.05.2011

    Подскажите как заменить маркеры в выводе последних постов на время публикации, либо просто добавить спереди к заголовкам время публикации?

  • Tod   28.05.2011

    Для добавления даты следует использовать вместо функции wp_get_acrhives другую конструкцию, пример кода есть в статье Список последних сообщений выбранной категории — добавляете в код вывод даты и все будет, как нужно.

  • Олег   06.08.2011

    Извините, а не подскажите , как сделать чтобы отображался вывод архива для конкртеной категории?Например, при нажатии на категорию Новости , должен выводится архив именно для нее. т.е. нужно чтобы, после выбора категории под именем новости ткнув на архив за 2010 вывелись все посты всех подкатегорий входящих только в эту категорию за 2010 год. А выбрав категорию партнеры и нажав на ее архив за 2011 год,вывелись посты только по партнерам за 2011, а не те и те. Жду помощи, спасибо заранее!

  • Tod   10.08.2011

    Олег, нужно поискать какой-то плагин, я, к сожалению, подсказать не смогу, так как подобного не встречал.

  • Наиль   22.10.2011

    Доброго времени суток! Вопрос к «Админу» и не только… Подскажите, почему у меня на блоге при нажатии на ссылку с архивами в сайтбаре, открывается не страница с архивами за определённый месяц или год,а открывается главная страница. Как можно это исправить.

  • Tod   23.10.2011

    Наиль, возможно у вас проблема совместимости wordpress 3.1 и Simple Tags либо проблемы с каким-то другим плагином, попробуйте их отключать по очереди и проверить. Возможно также ошибка в htaccess.

  • Наиль   23.10.2011

    Спасибо! Отключая последовательно плагины, выяснил, что всё дело в плагине «Robots Meta». В настройках плагина море всяких галочек, если бы ещё знать какую надо убрать или поставить, чтобы всё работало идеально…

  • Виталий   18.11.2011

    Привет, подскажите пожалуйста где можно найти и подправить код календаря? Проблема в том, что титл имеет значение всех постов за конкретный день… это надо изменить так как текс получается внушительным…

  • Tod   18.11.2011

    Виталий, честно говоря, не полян вопрос вообще.

  • Виталий   18.11.2011

    наведите на число календаря на моем сайте news-info.net и все поймете =)
    идей нет?

  • Tod   20.11.2011

    Виталий, лучше поставить какой-то специальный плагин. Что касается базового календаря — находите в шаблоне функцию которая его выводит и изучаете ее параметры, думаю, там можно отключить вывод текста.

  • Ирина   30.12.2011

    Здравствуйте
    Выпадающий список архивов у меня не получился.
    Если я оставляю виджет «архивы» в админке, то удалив в файле sidebar и вставив указанный вами код, я получаю полный список архивов, как было раньше.
    Если в админке я убираю виджет «архивы», а в sidebar вставляю указанный вами код, то архивы просто не выводятся.
    Помогите разобраться!

  • Tod   02.01.2012

    Ирина, нужно использовать либо этот код в шаблоне либо виджеты — все зависит от шаблона. Если есть виджеты, то проще через них и никакой код не нужен, если есть желание больше настроек указать, то вставляется функция в файл sidebar.php, но только в ту область, которая не отвечает за виджеты — если не выводятся архивы попробуйте просто текст вывести, возможно также какая-то ошибка при добавлении функции, надо разбираться в общем.

  • Ирина   04.01.2012

    Спасибо, получилось. Убрала виджет «архивы» в админке из правой части сидибара и вставила код в левый сидебар — появился выпадающий список архивов.

  • Юлия   01.02.2012

    Очень нужна помощь! Как отменить архивирование рубрик? На предыдущей теме страница рубрик была такой же, как и главная страница блога. На новой теме страница каждой рубрики в виде архива. А как сделать так, чтоб архивов вообще не было и внешний и функциональный вид страниц рубрик не менялся?

  • Tod   02.02.2012

    Юлия, архивирование рубрик никак не отменить — это функциональность вордпресс. Есть варианты:
    — не выводить рубрики в блоге;
    — поставить плагин All in One SEO Pack или Platinum Seo с помощью которых закрыть индексацию архивов дабы они никому не мешали;
    — можно подправить файл шаблона archive.php дабы сделать нужный вам формат вывода категорий.

  • Юлия   04.02.2012

    спасибо!

  • Артур   25.02.2012

    Здравствуйте, а можно ли выводить количество записей за период сразу в теге ? Каким образом можно это сделать?

  • Tod   25.02.2012

    Артур, выводить в теге? не совсем понял вопрос. Да, код не отобразился. Если речь идет о тегах (tags) то я бы гуглил в том направлении. Функция wp_get_archives больше для архивов, теги здесь вообще никак не играют роли.
    Хотя даже для функции wp_tag_cloud() которая выводит теги не нашел отображение количества статей за период. Кстати, еще можно глянуть в админке вордпресс виджеты — там может можно отобразить теги + количество постов. Но оно будет общее, а не за период.

  • Артур   26.02.2012

    Нет, Вы меня не поняли.
    При использовании функции 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;
    ?>

    С архивами так сделать не могу, точнее не понимаю как, может быть вы поможете.

  • Артур   26.02.2012

    Теги почему-то съедаются.
    Вот ссылка на файл с кодом: http://rghost.ru/36714113

  • Tod   26.02.2012

    Артур, увы, не подскажу почему так происходит. Видимо нужно тестировать дальше код и искать глюк.

  • Sky   17.08.2012

    подскажите, как вывести посты по месяцам в archive.php только из одной категории?

  • Tod   19.08.2012

    Sky, точный код не подскажу, вам нужно будет посмотреть если возможность добавить параметр выбора категории в функцию которая выводит архивные посты — там есть что-то такое. Но вообще не уверен, что правильна постановка вопроса — если выводится архив по месяцам, то главным параметром здесь есть дата и именно она будет оцениваться, то есть например просматривая посты за август (ссылка — 2012/08/) здесь нет информации о категории и возможности ее выбрать. Короче говоря, можно в файле отображения архива выбрать одну категорию, которая будет всегда отображаться и для всех архивных страниц.

  • Натали   22.04.2013

    Помогите, пожалуйста! У меня проблема.. никак сама не могу разрешить. Публикую в постах видео. На главной странице видео без проблем отображается. А когда нажимаешь на рубрику, в которой этот пост находится, то там пост уже без видюшки идет:-((( Текст есть, а видео он режет… Вот не могу понять, где и что нужно подкорректировать.
    На главной видео присутствует. А вот тут нет: lr-up.ru/archives/category/other — Вот тут этот пост уже вызван из РУБРИКИ. Как видите, видео в нем нет(

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости