WP_GET_ARCHIVES() │ WordPress 1.2.0
Функция wp_get_archives() отображает ссылки на архивы постов, сгруппированные по типу и формату.
Замечание о производительности:
Время выполнения:
- 1 раз — 0.004392 сек (очень медленно)
- 50000 раз — 111.96 сек (крайне медленно)
PHP: 7.0.5, WordPress: 4.4.2
Хуки функции
getarchives_wheregetarchives_jointhe_title
Возврат значения
Функция возвращает null или строку. Если аргумент echo равен true, возвращается null. Если echo равен false, возвращаются ссылки на архивы.
Использование
wp_get_archives( $args );
Аргументы
Параметры функции могут быть переданы в виде строки или массива. Аргументы по умолчанию:
$args = '';
-
type (string)
Тип архива, который нужно получить. Возможные значения:daily,weekly,monthly,yearly,postbypost, илиalpha.
postbypostиalphaотображают одинаковый список архивов, ноalphaсортирует по заголовку поста, аpostbypost— по дате поста.
По умолчанию:monthly -
limit (string|int)
Максимальное количество ссылок, которые нужно вернуть.
По умолчанию: нет ограничения. -
format (string)
Формат, который должен иметь каждый выводимый элемент ссылки. Возможные значения:link,option,htmlили пользовательский формат.
По умолчанию:html -
before (string)
Разметка, которая добавляется перед каждой ссылкой.
По умолчанию: пустая строка. -
after (string)
Разметка, которая добавляется после каждой ссылки.
По умолчанию: пустая строка. -
show_post_count (true|false)
Отображать ли количество постов рядом со ссылкой.
По умолчанию: false -
echo (true|false|int)
Отображать ли список ссылок (echo) или возвращать его.
По умолчанию: 1 (true для отображения) -
order (string)
Порядок сортировки:ASC(по возрастанию) илиDESC(по убыванию).
По умолчанию:DESC -
post_type (string)
Тип поста.
По умолчанию:post -
year (string)
Год для фильтрации.
По умолчанию: текущий год. -
monthnum (string)
Номер месяца для фильтрации.
По умолчанию: текущий номер месяца. -
day (string)
День для фильтрации.
По умолчанию: текущий день. -
w (string)
Номер недели для фильтрации.
По умолчанию: текущая неделя.
Примеры использования
Пример 1: Отображение архива постов, сгруппированного по месяцам
Этот код покажет архивы за последние 12 месяцев.
Пример 2: Отображение архива постов, сгруппированного по дням
'daily', 'limit'=>14, 'show_post_count' => 'true' ] ); ?>
Этот код отобразит архив постов за последние 14 дней с указанием количества постов в скобках, например, "2 ноября 2015 (3)".
Пример 3: Отображение списка последних 20 постов в алфавитном порядке
Пример 4: Выпадающий список архива по месяцам
Этот код создаст выпадающий список для выбора месяца с указанием количества постов.
Пример 5: Отображение списка всех постов в алфавитном порядке
Пример 6: Добавление rel="nofollow" ко всем ссылкам из списка
$archives = wp_get_archives( [
'echo' => 0,
'type' => 'postbypost',
'limit' => 3,
'format' => 'html',
] );
echo str_replace( '
Пример 7: Фильтрация по определенной категории
add_filter( 'getarchives_where', 'custom_archive_by_category_where' );
add_filter( 'getarchives_join', 'custom_archive_by_category_join' );
$args = array();
wp_get_archives( [
'type' => 'yearly',
'format' => 'option',
'post_type' => 'news',
] );
remove_filter( 'getarchives_where', 'custom_archive_by_category_where' );
remove_filter( 'getarchives_join', 'custom_archive_by_category_join' );
Эти фильтры могут быть использованы для изменения ссылок архивов в зависимости от категории.
Пример 8: Получение массива с названиями и значениями
function theme_name_get_year_archive_array() {
$years = [];
$years_args = [
'type' => 'monthly',
'format' => 'custom',
'before' => '',
'after' => '|',
'echo' => false,
'post_type' => 'news',
'order' => 'ASC',
];
$years_content = wp_get_archives( $years_args );
if( ! empty( $years_content ) ){
$years_arr = explode( '|', $years_content );
$years_arr = array_filter( $years_arr, function( $item ) {
return trim( $item ) !== '';
});
foreach( $years_arr as $year_item ){
$year_row = trim( $year_item );
preg_match( '/href=["']?([^"'>]+)["']>(.+)/', $year_row, $year_vars );
if( ! empty( $year_vars ) ){
$years[] = [
'name' => $year_vars[2],
'value' => $year_vars[1]
];
}
}
}
return $years;
}
Пример 9: Отображение заголовков последних 20 постов
'postbypost',
'limit' => 20,
'format' => 'custom',
'before' => '',
'after' => ', ',
] );
?>
Пример 10: Использование пользовательских оберток на каждой ссылке
$args = array(
'type' => 'monthly',
'limit' => '',
'format' => 'custom',
'before' => '',
'after' => '',
'show_post_count' => false,
'echo' => 1,
'order' => 'DESC'
);
wp_get_archives( $args );
Примечания
- Если вас интересуют детали работы функции
get_archives_link(), вы можете посмотреть её документацию. - Используются глобальные объекты:
$wpdb(для работы с базой данных) и$wp_locale(для локализации даты и времени).
Изменения в версии
- С 1.2.0: Введена функция.
- С 4.4.0: Добавлен аргумент
$post_type. - С 5.2.0: Добавлены аргументы
$year,$monthnum,$dayи$w.
Теперь у вас есть все необходимые данные для использования функции wp_get_archives() в WordPress!