Привет, друзья. Сегодня хочу рассказать вам об одной фишке, которую недавно сам применил на своем блоге. Займемся чем-то типа создания своих шорткодов, которые можно будет использовать прямо в постах на блоге.
С помощью этих кодов можно будет выводить любой контент, динамический или статический – не имеет значения, главное, что это дело можно добавить в любое место при написании поста, а в последствии вносить изменения только в одном месте и не редактировать кучу постов.
Давайте сразу покажу живые примеры, чтобы было понятнее, о чем идет речь. Вот парочка ссылок на мои модули для 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.
Пользуйтесь на здоровье, пишите комментарии и задавайте вопросы. Спасибо за внимание!
Спасибо за новую статью! Даже не смотря на приближение праздника АлаичЪ работает )
А меня что-то накануне праздников наоборот прорвало, хочется писать, идеи вдруг появились, а главное желание писать... Но я сдержусь и кое-что вкусное опубликую только в следующем году :)
Хах, часов 5 назад, как раз столкнулся с проблемой, что нужно было вставить php в WP, все искал плагины, потом отыскал exec_php. Эх, АлаичЪ, написал бы ты этот пост на пару часов раньше цены бы тебе не было :) Но все равно спасибо за статейку!
На DLE есть что-то подобное?
Тоже интересует DLE, причем 9.7
Все равно большее спасибо за статью
У меня нет чего-то подобного для DLE, да и не планируется, потому что мне это не нужно.
Все понятно, спасибо. Просто поинтересовался, мало ли.
Подскажите, пожалуйста, как создать шорткод для имени текущего пользователя, чтобы его можно было вставлять в разные места в текстах на страницах или заметках.
Попробуй что-нибудь такое:
Т.е. при написании поста надо будет вставлять тег [MyAuthor]
Правда шорт-коды не во всех темах WordPress работают((( У меня раньше была тема в которой их нельзя было подключить не плагинами, не в ручную... ну или может у меня руки не под это заточены))
Здравствуйте, у меня на блоге стоит плагин для вывода последних статей — WordPress Related posts, он после установки автоматически ставит список похожих статей после постов
и я попытался поставить между ним и самим постом скриптик для соц сетей,
но как я ни пытался, скриптик отображается только после WordPress Related posts, а не до него.
подскажите пожалуйста, куда код прописать, что б вот как у Вас было)))
Выход один — вносить правки вручную, а не чтобы автоматически добавлялось. Как это сделать — смотрите readme к плагину.
Спасибо)
Шорткод выводиться вначале статьи, а не в том месте где я его указал в чем проблема?
Скорее всего в том коде, который выводится при помощи шорткода. Для проверки рекомендую пр помоши шорткода выводить какое-нибудь слово, например "Привет!" :) Если оно будет выводиться там где надо, все окей. И если при вставке более сложного кода при помощи шорткода что-то куда-то уезжает — значит дело в css стилях.
АлаичЪ: спасибо, полезный блог. Из того, что интересно было бы почитать еще — это 1. создание отдельного сайдбара для каждой рубрики и 2.создание форума на wp как у тебя.
А как в шорткод вставить РСЯ?
Adsense нормально, а вот РСЯ не хочет
Сайт сразу "падает" после вставки этого кода:
<!-- Яндекс.Директ -->
<script type="text/javascript">
yandex_partner_id = 138475;
yandex_site_bg_color = 'FFFFFF';
yandex_stat_id = 1;
yandex_ad_format = 'direct';
yandex_direct_type = 'posterHorizontal';
yandex_direct_border_type = 'block';
yandex_direct_limit = 2;
yandex_direct_title_font_size = 3;
yandex_direct_border_radius = true;
yandex_direct_links_underline = false;
yandex_direct_border_color = 'CC0000';
yandex_direct_title_color = 'CC0000';
yandex_direct_url_color = 'CC0000';
yandex_direct_text_color = 'CC0000';
yandex_direct_hover_color = 'CC0000';
yandex_direct_favicon = false;
yandex_no_sitelinks = true;
document.write ('<scr'+'ipt type="text/javascript" src="//an.yandex.ru/system/context.js"></scr'+'ipt>');
</script>
Попробуй экранировать апострофы. То есть писать не ' а \' — во всем коде надо сделать эту замену.
Александр, боязно изменять код РСЯ — запрещено правилами.
Нашёл выход — простейший плагин для создания шорткодов
https://wordpress.org/plugins/scode-by-mojwp/
Нужно для отслеживания срезов РСЯ (в каждой рубрике на сайте — свой срез)
Люди, не мучайтесь, используйте плагин Adinserter.