Что делает 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() в зависимости от типа записи.