Функции WordPress

Свои шорткоды для WordPress — как вставить в пост любой php код или функцию

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

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

Давайте сразу покажу живые примеры, чтобы было понятнее, о чем идет речь. Вот парочка ссылок на мои модули для DLE: LinkEnso PRO, TagFace и CatFace.

Что общего между этими тремя разными страницами? Кроме того, разумеется, что там идет речь о модулях и DLE, на всех этих страницах есть вот такой замечательный блок с картинками и ссылками:

Пример блока, выводимого шорткодом

Этот блок представляет собой не что иное, как обычный html при просмотре исходного кода, и ничем не отличается от простого контента, вставленного при написании поста. Все так и есть, за исключением того, что выводится все это добро при помощи специального кода, который я сам придумал и вставил в пост в удобное место. И чтобы мне что-то исправить или добавить в этот блок, мне надо отредактировать только одну функцию в файле functions.php.

Я считаю, что это капец как удобно, и я просто обязан поделиться этой темой с вами. Я не первый, и не я это придумал, регулярные выражения придумали еще до того, как я узнал, что такое интернет :)

Пишем функцию и создаем свой шорткод в WordPress

Решил не катать долго вату, а сразу приступить к делу. А потому идем в редактор внешнего вида своей темы оформления и находим там файл functions.php. Ниже я приведу пример моей собственной функции, которая генерирует то, что вы видели на скриншоте выше.

/*** Вывод списка модулей в любом месте поста ***/
	function my_modules() {
		return '<div style="margin:10px 180px;"><table class="nobrd" cellpadding="0" cellspacing="0" border="0"><tr><th colspan="5" style="padding-bottom:10px;">Команда АлаичЪ\'а трудится непокладая рук и вот что у нас есть для вас:</th>
	</tr><tr>
		<td><img src="https://alaev.info/wp-content/uploads/2011/03/sitemap.png" alt="HTML SiteMap" title="HTML SiteMap" width="100" height="100" class="nobrd alignnone size-full"></td>
		<td><img src="https://alaev.info/wp-content/uploads/2011/05/catface.png" alt="CatFace" title="CatFace" width="100" height="100" class="nobrd alignnone size-full"></td>
		<td><img src="https://alaev.info/wp-content/uploads/2011/11/snvote-v.1.1.png" alt="SNVote" title="SNVote" width="100" height="100" class="nobrd alignnone size-full"></td>
		<td><img src="https://alaev.info/wp-content/uploads/2012/03/linkenso.png" alt="LinkEnso" title="LinkEnso" width="100" height="100" class="nobrd alignnone size-full"></td>
		<td><img src="https://alaev.info/wp-content/uploads/2012/06/tagface.png" alt="TagFace" title="TagFace" width="100" height="100" class="nobrd alignnone size-full"></td>
	</tr><tr>
		<th><a href="https://alaev.info/blog/post/1974">SiteMap</a></th>
		<th><a href="https://alaev.info/blog/post/2086">CatFace</a></th>
		<th><a href="https://alaev.info/blog/post/2435">SNVote Free</a><br /><a href="https://alaev.info/blog/post/2836">SNVote PRO</a></th>
		<th><a href="https://alaev.info/blog/post/3322">LinkEnso Free</a><br /><a href="https://alaev.info/blog/post/3982">LinkEnso PRO</a></th>
		<th><a href="https://alaev.info/blog/post/3857">TagFace</a></th>
	</tr></table></div>';
	}
	add_shortcode('DLEmod', 'my_modules');

Немного разберем то, что написано. Для кого-то это совершенно непонятная абракадабра :)

  • my_modules – это название функции, я его придумал сам, можете использовать здесь любое другое название, чего душа пожелает.
  • return ' … '; – собственно html-контент, который мы хотим вывести в посте на месте шорткода, т.е. наш блок. Важно знать, что если где-то в вашем контенте внутри return будут встречаться апострофы, как у меня «АлаичЪ\’а», то их надо экранировать обратным слешем, в примере это видно.
  • add_shortcode('DLEmod', 'my_modules'); – это функция, которая создаст для нас шорткод. Здесь используется WordPress Shortcode API, содержащий набор функций для работы с регулярками и не только…короче, это для вас не важно. В общем, использование этой команды создаст для нас шорткод с названием [ DLEmod ] (без пробелов между названием и скобками) и будет выводить на его месте содержимое функции my_modules.

В моем примере приведен самый простейший случай, без использования какой-либо динамики, но при желании можно использовать любой сценарий на php. Если вам это интересно, можете нагуглить, я же просто хотел рассказать о возможности немного облегчить себе жизнь.

Если хотите, в будущем я рассмотрю возможности работы непосредственно работы с регулярными выражениями, без использования WordPress API.

Пользуйтесь на здоровье, пишите комментарии и задавайте вопросы. Спасибо за внимание!

Статьи по теме

Кнопка "Вернуться к началу"
Закрыть

Обнаружен Adblock

Пожалуйста, подумайте о том, чтобы поддержать нас, отключив свой блокировщик рекламы!