
С помощью этих кодов можно будет выводить любой контент, динамический или статический – не имеет значения, главное, что это дело можно добавить в любое место при написании поста, а в последствии вносить изменения только в одном месте и не редактировать кучу постов.
Давайте сразу покажу живые примеры, чтобы было понятнее, о чем идет речь. Вот парочка ссылок на
Что общего между этими тремя разными страницами? Кроме того, разумеется, что там идет речь о модулях и 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.
Пользуйтесь на здоровье, пишите комментарии и задавайте вопросы. Спасибо за внимание!