В PHP-шаблонах WordPress ссылки на главную, страницы и рубрики лучше получать через функции ядра. Ниже — примеры для классической темы. Перед выводом URL в href используй esc_url().
Ссылка на главную страницу
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">На главную</a>
home_url() возвращает адрес публичной части сайта. Схема и домен берутся из настроек WordPress. Слеш у корневого адреса сам по себе не даёт преимущества в SEO.
Ссылка по известному пути
<a href="<?php echo esc_url( home_url( '/custom-page/' ) ); ?>">О странице</a>
Этот вариант подходит для известного маршрута, но не проверяет существование страницы. Если её путь изменится, строку в шаблоне придётся исправить.
Ссылка на страницу по ID
Если ссылка должна пережить смену slug, используй ID страницы. Замени 42 на ID нужной опубликованной страницы в своей базе. При переносе контента между сайтами ID могут различаться.
<?php
$page = get_post( 42 );
if ( $page && 'page' === $page->post_type && 'publish' === $page->post_status ) {
$url = get_permalink( $page );
if ( $url ) {
echo '<a href="' . esc_url( $url ) . '">О странице</a>';
}
}
?>
Поиск страницы по slug или пути
<?php
$page = get_page_by_path( 'custom-page', OBJECT, 'page' );
if ( $page && 'publish' === $page->post_status ) {
$url = get_permalink( $page );
if ( $url ) {
echo '<a href="' . esc_url( $url ) . '">О странице</a>';
}
}
?>
Для вложенной страницы укажи путь вроде parent/child. get_page_by_path() ищет по текущему пути: после переименования slug или переноса страницы под другого родителя поиск по старой строке не сработает. Проверка результата нужна до вызова get_permalink(). В Multisite поиск выполняется в контексте текущего сайта.
Ссылка на рубрику
В get_category_by_slug() передавай slug, например wordpress, а не отображаемое название «WordPress». Если рубрика не найдена, ссылку не выводим.
<?php
$category = get_category_by_slug( 'wordpress' );
if ( $category ) {
$url = get_category_link( $category->term_id );
if ( ! is_wp_error( $url ) ) {
echo '<a href="' . esc_url( $url ) . '">Статьи о WordPress</a>';
}
}
?>
Когда ID рубрики известен, можно передать его сразу в get_category_link(), сохранив проверку is_wp_error().
Для навигации по сайту удобнее зарегистрировать меню WordPress. Ссылка в логотипе разобрана в статье про кастомный логотип.