Очередной блог фрилансера

коротко и полезно о веб-разработке

Menu Close

WordPress. Простой шорткод для постоянных ссылок

Сегодня, публикую перевод небольшой статьи о создании весьма полезного шорткода, кстати если вы еще не слышали о шорткодах, можете прочитать в моей предыдущей статье.

Во время создания шаблона для WordPress, у вас может возникнуть необходимость указать ссылку на конкретную страницу прямо в шаблоне. Для этого есть специальная функция, которую вы можете использовать.

Плохой пример:

<a href="/contact/">Контакты</a>

Хороший пример:

<a href="<?php echo get_permalink(12); ?>">Контакты</a>

Здесь «12» — это ID нужной записи или страницы. Почему же этот способ правильней?

  • ссылка будет работать, даже если вы измените структуру ссылок;
  • ссылка будет работать, даже если сайт будет перенесен с субдомена (который вы использовали для тестирования) на домен верхнего уровня.

Используя вышеуказанную функцию, ссылки на ваши записи и страницы никогда не изменятся. Это очень удобно использовать, при работе с файлами нашей темы, но как насчет использования ссылок на страницах и записях в визуальном редакторе?

По умолчанию, мы не можем выполнять PHP-код внутри нашей страницы или записи, а следовательно нет возможности использовать функцию get_permalink. Что мы можем сделать, так это создать специальный шорткод, с точно такой же функциональностью. И вот он:

function permalink_thingy($atts) {
	extract(shortcode_atts(array(
		'id' => 1,
		'text' => ""  // значение по умолчанию, если ничего не указано
    ), $atts));
    
    if ($text) {
        $url = get_permalink($id);
        return "<a href='$url'>$text</a>";
    } else {
	   return get_permalink($id);
	}
}
add_shortcode('permalink', 'permalink_thingy');

Этот шорткод можно использовать двумя способами:

Просто:

<a href="[permalink id=49]">Использование без текста</a>

Здесь вам нужно просто указать параметр id и шорткод вернет URL. Полученный URL можно использовать любым способом, например, если вам нужно присвоить ссылке определенный класс или еще для чего-нибудь.

С текстом:

[permalink id=49 text='providing text']

Этот способ вернет полностью форматированную ссылку, с текстом, который вы указали.

Перевод статьи «Easy Shortcode Permalinks», автор Chris Coyier

Рассказать друзьям

Понравилась статья? Лучший способ сказать спасибо - поделиться ссылкой в социальных сетях: