Что делает get_permalink()

Функция get_permalink() возвращает постоянную ссылку (URL) на запись. Работает с постами, страницами и произвольными типами записей. Удобна тем, что её можно использовать как внутри цикла, так и вне него — достаточно передать ID записи.

Если вызвать функцию без параметров вне цикла на архивной странице, она вернёт ссылку на последнюю запись из текущего цикла.

При выводе ссылки в HTML всегда экранируй результат: в атрибутах — через esc_url(), как обычный текст — через esc_html().

Синтаксис

$url = get_permalink( $post, $leavename );

Параметры

$post (число или объект) — ID или объект записи. По умолчанию 0 — берётся текущий пост из цикла.

$leavename (bool) — если передать true, плейсхолдер %postname% в URL не будет заменён на реальный slug. По умолчанию false.

Что возвращает

Строку с URL записи или false, если запись не найдена.

Примеры использования

Получить ссылку с незаменённым %postname%:

echo get_permalink( 185, true );
// http://example.com/185/%postname%

Меню из статических страниц по ID — удобный способ без хардкода URL:

<ul>
  <li><a href="<?php echo esc_url( get_permalink( 1 ) ); ?>">О блоге</a></li>
  <li><a href="<?php echo esc_url( get_permalink( 10 ) ); ?>">Об авторе</a></li>
</ul>

Вывод ссылки на текущий пост внутри цикла:

<?php echo esc_url( get_permalink() ); ?>

История версий

Функция доступна с первых версий WordPress. Внутри использует get_post_permalink(), get_page_link() и get_attachment_link() в зависимости от типа записи.

Разработка сайтов на Wordpress