Ссылки в WordPress: главная, страницы и рубрики
← Блог
WordPress · 25.11.2024 · 2 мин чтения

Ссылки в WordPress: главная, страницы и рубрики

В 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. Ссылка в логотипе разобрана в статье про кастомный логотип.

Документация

Есть вопрос или дополнение?

Обсудить в Telegram

Добавить комментарий