get_post_type_archive_link()

Функция возвращает URL (постоянную ссылку) страницы архива типа записи.

Страница архива – это страница, на которой автоматически выводятся все записи данного типа. Обычно имеет URL вида https://misha.agency/название_типа_записи, но вместо названия типа записи по факту можно указать что угодно, задав это при регистрации в параметре has_archive. Кроме того, у обычных записей (тип поста post) страницей архива является либо главная, либо страница «Блог», в зависимости от того, что у вас в Настройки > Чтение.

Обратите внимание, что функция вернёт false в двух ситуациях:

  • Если типа записей, указанного в параметрах, не существует.
  • Если тип записей не поддерживает архивы, такое бывает, когда параметр has_archive при регистрации указан false.

А вообще, рекомендую моё подробное руководство по произвольным типам постов.

get_post_type_archive_link( $post_type )

Параметры

$post_type
(строка) Название типа записей.

Пример

Предположим, что мы зарегистрировали какой-то произвольный тип постов, что-то типо этого:

add_action( 'init', function() {
	register_post_type(
		'game',
		array(
 
			// любые другие параметры
 
			'has_archive' => true,
		)
	)
)

И потом где-нибудь выводим ссылку на архивы:

echo '<a href="' . get_post_type_archive_link( 'game' ) . '">Архив игр</a>';

Хуки

post_type_archive_link

При помощи этого фильтра вы можете изменить то, что возвращает функция в зависимости от переданных в неё параметров.

Допустим… хм.. давайте для типа записи game добавим какой-нибудь якорь к ссылке.

add_filter( 'post_type_archive_link', 'true_change_archive_link', 25, 2 );
 
function true_change_archive_link( $link, $post_type ) {
 
	if( 'game' === $post_type ) {
		$link = $link . '#games';
	}
	return $link;
 
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 2

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.