the_permalink() и get_permalink() что это и как использовать

WordPress, как ведущая CMS, предлагает множество функций для оптимизации веб-разработки. Среди них, the_permalink() и get_permalink() являются ключевыми для работы с постоянными ссылками. Разберемся в различии между этими функциями и как их правильно использовать. Приведу реальные примеры кода как стандартного и нестандартного использования функций. Также будут интересные примеры кода с объяснением, которые помогут навсегда разобраться где и как использовать the и get pormalink.

Функция the_permalink() что это и для чего нужна

Функция the_permalink() в WordPress — это основная функция, используемая для вывода URL текущего поста или страницы. Она автоматически выводит постоянную ссылку (permalink) на пост или страницу, в контексте которой она вызывается. Эта функция особенно полезна в шаблонах, где требуется создать прямую ссылку на пост, например, в списке последних постов или на странице архива.

<?php the_permalink(); ?>

Базовый пример the_permalink() использования в коде:

<a href="<?php the_permalink(); ?>">Читать далее</a>

В этом примере функция the_permalink() вставляет URL текущего поста непосредственно в атрибут href ссылки, создавая таким образом прямую ссылку на этот пост. 

Пример функции the_permalink() в стандартном цикле WordPress:

if ( have_posts() ) {

    while ( have_posts() ) {

        the_post(); 

        echo '<a href="' . the_permalink() . '">Читать далее</a>';

    }

}
  • Эта функция непосредственно выводит URL текущего поста.
  • Используется внутри цикла WordPress.
  • Не требует дополнительных аргументов.

Пример реального применения функции the_permalink() в коде 

Пример 1

function custom_posts_list() {

    $args = array('numberposts' => 5);

    $latest_posts = get_posts($args);

    foreach ($latest_posts as $post) {

        setup_postdata($post);

        echo '<li><a href="' . the_permalink() . '">' . get_the_title() . '</a> - ' . get_the_excerpt() . '</li>';

    }

    wp_reset_postdata();

}

Этот код извлекает и отображает список из пяти последних постов вместе с их заголовками и краткими описаниями, для отображения последних новостей или статей.

Пример 2

Рассмотрим интересный пример, где функция the_permalink() используется нестандартным образом, в контексте сложного и насыщенного цикла WordPress. В этом примере мы создадим функционал для отображения рекомендуемых постов, где the_permalink() будет использоваться для создания не только ссылок на посты, но и для генерации уникальных атрибутов данных, которые могут быть использованы для дополнительной логики на стороне клиента (например, для отслеживания кликов или для аналитики).

function display_recommended_posts() {

    $args = array(

        'posts_per_page' => 4, // Лимит постов

        'orderby' => 'rand', // Случайный порядок

        'post__not_in' => array(get_the_ID()) // Исключить текущий пост

    );

    $recommended_posts = new WP_Query($args);

    if ($recommended_posts->have_posts()) {

        echo '<div class="recommended-posts">';

        while ($recommended_posts->have_posts()) {

            $recommended_posts->the_post();

            echo '<div class="post">';

            echo '<h3><a href="' . esc_url(get_permalink()) . '" data-post-id="' . get_the_ID() . '">' . get_the_title() . '</a></h3>';

            the_excerpt();

            echo '</div>';

        }

        echo '</div>';

    }

    wp_reset_postdata();

}

В это примере кода мы создаем разметку для каждого поста с заголовком и кратким описанием. И тут мы очень интересно используем функцию the_permalink(): она вставляется в атрибут href ссылки, а get_the_ID() добавляется в атрибут data-post-id. Это позволяет не только перейти к посту, но и предоставляет уникальный идентификатор для каждой ссылки, который мы можем использовать в скриптах для отслеживания кликов или аналитики.

Функция get_permalink() что это и для чего нужна

get_permalink() — это функция в WordPress, используемая для получения URL (постоянной ссылки) конкретного поста или страницы. В отличие от the_permalink(), которая непосредственно выводит URL в шаблон, get_permalink() возвращает URL в виде строки. Это позволяет сохранить постоянную ссылку в переменной для дальнейшего использования, например, для создания ссылок в пользовательском коде или для передачи URL в качестве параметра в другие функции.

<?php get_permalink(); ?>

Базовый пример get_permalink() использования в коде:

$post_id = 42; // ID поста

$post_url = get_permalink($post_id);

echo '<a href="' . $post_url . '">Посмотреть пост</a>';
  • Возвращает URL поста как строку.
  • Может быть использована вне цикла WordPress.
  • Принимает необязательный аргумент ID поста.

Пример реального применения функции get_permalink() в коде 

Пример 1

function generate_post_qr_code() {

    $post_url = get_permalink();

    echo '<img src="https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=' . urlencode($post_url) . '">';

}

Этот код генерирует QR-код для URL текущего поста с помощью подключенного внешнего сервиса по API, затем создает изображение в виде QR кода, которое можно вставить на страницу или распечатать.

Пример 2

function custom_social_share_buttons() {

    $post_url = get_permalink();

    echo '<a href="https://twitter.com/share?url=' . urlencode($post_url) . '">Поделиться в Twitter</a>';

    echo '<a href="https://www.facebook.com/sharer.php?u=' . urlencode($post_url) . '">Поделиться в Facebook</a>';

}

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

В чем разница между the_permalink() и get_permalink() ?

Когда использовать the_permalink() ?

Идеально подходит для шаблонов, где требуется прямой вывод URL текущего поста.

Пример: создание цикла со списком постов где выводим ссылки на их полные версии.

Когда использовать get_permalink() ?

Подходит для сценариев, где нужно присвоить URL переменной или передать его как параметр.

Пример: Создание пользовательских ссылок вне стандартного цикла WordPress.

Финалочка

Выбор между the_permalink() и get_permalink() зависит от контекста использования в вашем проекте WordPress. Обе функции очень разные и предназначены под разные задачи. Постарался наглядно объяснить разницу между ними и действительно реальные примеры того, как они используются в повседневных задачах.

Для отправки комментария вам необходимо авторизоваться.

Популярные статьи: