Как создаются шорткоды? Пример простого шорткода


Игорь | 2013-08-02 | 46 комментариев

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

shortcode

Таким образом, можно быстро выводить рекламные баннеры, форму подписки и другие заготовленные вами шаблоны. Это может быть, как код html, так и скрипты.

Итак, как же создаются шорткоды?

Я покажу сам процесс на примере вывода строчки подписи. А вы уже по аналогии сможете создавать и добавлять другие свои шорткоды.

Итак, процесс состоит из 3 этапов:

  1. Подготавливается код блока, который нужно выводить в теле поста.
  2. Прописывается функция в файле functions.php вашей темы
  3. Вставка конструкции (кодовое слово)

Давайте пройдем все эти шаги создания шорткода

0circle686Подготовка кода. Например, вот код подписи html.

<p style="text-align: right;">Автор: Игорь<br> <a target="blank" title="Блогопрактика — километры полезной информации" href="/"><u>Чистый звук в мире инфобизнеса</u></a> </p>

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

Следующий шаг я сначала объясню, а потом сделаем его.

0circle717Итак, находим свою тему и в ней файл functions.php. Это можно сделать локально или из админки блога (Внешний вид — редактор).

tema

Если не уверены, как обращаться с functions.php — делайте сначала локально (или прежде сохраните исходный functions.php.)

Открываем файл functions.php. В самом конце кода файла, перед закрывающим тегом php, имеющим вот такой вид ?>  прописываем новую функцию, которая будет выводить наш шорткод.

Вот как она выглядит.

function my () { return 'здесь ваш html код или скрипт'; } add_shortcode ('avtor','my');

То есть, просто добавляем этот код в functions.php. Затем сохраните измененный файл functions.php, а в админке в визуальном редакторе пропишите слово avtor, заключенное в квадратные скобки. Вот так.

ещё один короткий код

У вас должна после обновления страницы появится фраза «здесь ваш html код или скрипт». Если есть, значит сделали все правильно. Значит саму суть вы уже уловили.

Но нам ведь нужно вывести код подписи html? А в последствии любой другой. Не так ли?

Поэтому давайте вникнем в саму суть этой функции:

function my () { return 'здесь ваш html код или скрипт'; } add_shortcode ('avtor','my');

Если вы сейчас разберетесь, что за что отвечает, вы сможете создавать свои шорткоды. В данном случае, считайте, что это и есть своеобразный шаблон шорткода.

0circle589Все что нужно делать — это менять текст в одинарных кавычках,  прописывать новое название для функции вывода и кодовое слово.

Читайте также:  Какие профессии будут востребованы в ближайшее время?

Первая часть функции:

function my () { return 'здесь ваш html код или скрипт'; }

Эта и есть сама функция, которая выводит заданный между одинарными кавычками текст «здесь ваш html код или скрипт».

Сама функция имеет название «my» (название вы даете сами, я назвал «my»), затем идет стандартный синтаксис кода php, (скобки) и в одинарных кавычках текст, который будет выводиться в теле поста.

Вторая часть функции:

add_shortcode ('avtor','my');

Это параметры вывода: avtor – кодовое слово, my – как вы уже знаете, название функции.

То есть, в нашем случае, как все работает? Вы обновили  файл functions.php с уже прописанной новой функцией и прописали в редакторе админки в квадратных скобках слово avtor.

ещё один короткий код

И вот, в теле поста появилась строчка «здесь ваш html код или скрипт»

0circle589Еще раз давайте уясним этот момент. У нас есть функция «my», при обращении к которой с помощью слова «avtor», в теле поста всегда появится то, что прописано в одинарных кавычках.

Вот такой принцип. Теперь по аналогии, чтобы нам вывести подпись, нужно в одинарные кавычки вставить код.

<p style="text-align: right;">Автор: Игорь<br> <a target="blank" title="Блогопрактика — километры полезной информации" href="/"><u>Чистый звук в мире инфобизнеса</u></a> </p>

Получится следующее

function my () { return '<p style="text-align: right;">Автор: Игорь<br> <a target="blank" title="Блогопрактика — километры полезной информации" href="/"><u>Чистый звук в мире инфобизнеса</u></a>'; } add_shortcode ('avtor','my');

Сохраняем functions.php, обновляем.

0circle748 В визуальном редакторе, в нужном месте прописываем слово avtor  в квадратных скобках. Функция в теме прописана и команда для вывода текста дана.

Делаем все по аналогии с любым другим кодом

Теперь по аналогии можно сделать шорткод для вывода, например, рекламы google или Яндекс. Нам нужен будет код рекламы, затем дать название функции вывода и задать кодовое слово.

0circle589Внимание! Для нового шорткода дается новое название функции и новое кодовое слово.

  • Для этого идете в админку google adsense или profit-partner, забираете код рекламного блока.
  • Опять открываете functions.php, добавляете перед закрывающим тегом новый шорткод. Можете скопировать уже имеющийся и сделать его правку.
  • В одинарные кавычки нужно вставить рекламный код.
  • Вместо функции «my» придумываете новую, например «google», меняете дважды в первой части кода и во второй.
  • Затем придумываете кодовое слово «googlereklama».
  • Сохраняете functions.php, обновляете (если локально делаете изменения).
  • Пишете в теле поста в googlereklama и у вас появляется реклама.

Qwertypay-Заработок в партнёрках!
Qwertypay – Агрегатор партнерских программ. Регистрируйся и зарабатывай!
specialist.qwertybiz.com

Итак, по аналогии, все что вы придумаете. Например, форму подписки, баннер партнерки, форму Смартреспондера.

0circle589В этом деле самая сложная часть – это 1 шаг, а дальше все по шаблону. Даете название функции вывода, текст вывода (код) и кодовое слово.

Читайте также:  Какие профессии будут востребованы в ближайшее время?

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

А я своим подписчикам сделаю подарок. 15% скидку на курс Евгения Попова.

wordpress - блог

В момент оформления заказа, на последнем шаге, вам будет предложено ввести купон скидки. Вводите SKIDKA_9B8 и будет сделан перерасчет с учетом 15% скидки. Дерзайте! Свой блог я сделал, благодаря этому курсу. У вас также получится.

На этом у меня все. Подписывайтесь на обновления блога.

Автор: Игорь
Чистый звук в мире инфобизнеса



Комментарии (46)

  1. Марина Антонова:

    Игорь, благодарю! Осталось только внедрить. Если будут вопросы, обязательно напишу.

    Ответить
  2. Владимир:

    Здравствуйте, Игорь!С одного раза ничего не понял. Буду изучать!

    Ответить
    • Игорь:

      Здравствуйте, Владимир! Я немного подправил, сейчас должно быть понятнее.

      Ответить
      • Владимир Николаевич:

        Благодарю, Игорь!

        Ответить
  3. Ольга:

    Игорь, спасибо! Оказывается все не так сложно.Тоже буду применять.

    А можно еще вопросик по теме? Как Вы заключаете в рамку текст? Например Ваш анонс о конкурсе Василия Мясникова?

    Ответить
    • Игорь:

      Рамку вокруг текста, как это делается — вот здесь

      Только там описана рамка с непрозрачным фоном. У меня несколько таких стилей. Один с прозрачным фоном, другие — нет.

      Ответить
      • Ольга:

        Спасибочки! Поэкспериментирую сначала на локальном хостинге. 😛

        Ответить
        • Игорь:

          Можно и на реальном, если дело имеет со стилями или сохраняйте исходный файл отдельно, чтобы в случае чего, его вернуть.

          Ответить
  4. Надежда:

    Классно! Спасибо!! У меня получилось!! 😛

    Ответить
  5. Александр Силиванов:

    Здравствуйте, Игорь!

    А вот у меня ничего не вышло... 😈

    Пробовал на локальном сервере поставить в текст форму подписки (тема стоит такая же, как и на реальном... В итоге — слово в квадратных скобках. Все вроде сделал, как у Вас...

    Ответить
    • Игорь:

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

      Ответить
  6. Елена Олейникова:

    У меня почему-то в файле functions.php нет закрывающегося тэга ?>. Я его подставила, потом попробовала воспользоваться вашими советами, все получилось ОК 🙂

    Спасибо! Сейчас начну экспериментировать, все же шорткоды штука очень удобная.

    Ответить
    • Игорь:

      Он, как бы, и не нужен. Читал на форумах споры на эту тему, нужен — не нужен. В одних шаблонах есть, в других нет. Я придерживаюсь такого мнения, что если есть открывающий — логично, чтобы был и закрывающий тег. Хотя он не функционален, но с точки зрения логики нужен.

      Ответить
  7. Елена Олейникова:

    Я посмотрела другие темы, действительно, во многих закрывающегося тэга нет. Но тут у меня другая проблема нарисовалась: пока вставляешь html-коды, все нормально, но попробовала скрипт вставить и все слетело к чертовой бабушке. Хорошо еще я для этих экспериментов создала тестовый блог, там и развлекаюсь 🙂

    Ответить
    • Игорь:

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

      Ответить
  8. Елена Олейникова:

    А от темы это может зависеть? Я на одной теме вставляю без проблем, а на другой этот же код вставляю, а в итоге ошибка сервера :- (

    Ответить
    • Игорь:

      Может быть. Точно не могу сказать. Но, например, плагин «Раздвижных всплывающих панелей» не работает со многими темами. Например, с моей, почему я его и не использую. Причина — 100% особенность темы. Как-то так сверстана, что плагин, ну никак не хочет. С другими — криво работает. С иными — отлично.

      Возможно, так и с шорткодами. Но у меня на 3-х блогах все превосходно фурычит. Поэтому мне даже и в голову не приходило, что могут быть где-то косяки.

      А потом, я же не программист )) А блоггер, рекомендующий то, что у меня работает 🙂 А может быть, Елена, просто в function темы есть какие-то ошибки. Могу только предполагать.

      Ответить
      • Елена Олейникова:

        Так именно этим ваши советы и ценны 🙂

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

        Мне всегда интересно докопаться до сути, поэтому и лезу со своими вопросами, авось что-то новое узнаю 😉

        Ответить
        • Игорь:

          Любознательность — двигатель научного прогресса. 😉

          Если бы ещё знать ответы на многие вопросы 🙂

          Ответить
  9. Василий:

    Спасибо, Игорь. Нужный функционал подсказали! Кстати, шорткоды все большее распространение получают в новых шаблонах для вордпресс!

    Ответить
    • Игорь:

      Да, уж. Осенило 😉 2 года пользуюсь, только сейчас написал.

      Ответить
  10. Ульяна:

    Здравствуйте, Игорь!

    И у меня не получилось вывести форму подписки Смартреспондера. 🙁 Пробовала вывести просто текст через шорткод — получается. Вставляю код подписной формы — сайт просто перестает открываться. Думала что-то в коде формы подписки не так, вставила её стандартным способом в страничку — всё нормально. Не знаете с чем может быть связанно такая реакция сайта именно на форму рассылки? 😳

    Ответить
    • Игорь:

      Попробуйте, Ульяна выводить не весь код, а только ту его часть, которая начинается с формы (form), где сами инпуты. А ту часть, кода (верхнюю), где прописаны function SR, я не использую.

      Ответить
      • Ульяна:

        Спасибо, Игорь!

        Я попробовала, но форма отображалась не корректно. Пришлось самой написать простенькую divную форму с кнопкой — картинкой внизу и подставить инпуты рассылки. Все получилось! Спасибо!!! 🙄

        Ответить
        • Игорь:

          Так оно и есть, Ульяна. У меня ведь также своя форма, заключенная в div. А от смартформы забраны только инпуты.

          Ответить
  11. Философ:

    Игорь, вот читаю пост и думаю о том, на сколько же мобилен и гибок движок ВордПресс. Уже который раз убеждаюсь в правильности выбора именно этого блогового движка.

    Спасибо Вам за полезную информацию.

    Ответить
    • Игорь:

      Если сравнивать WordPress и Joomla, с которой я раньше познакомился, то WordPress более простой и понятный.

      Ответить
      • Философ:

        Согласен. А еще мне думается, что ВордПресс — менее «дыряв», то бишь более защищен от взлома.

        Ответить
        • Игорь:

          Менее или более, не знаю, но обновляется регулярно.

          Ответить
          • Философ:

            У ВордПресса тоже с обновлениями — полный порядок, тем не менее «ломают», находят «дыры», редиски... А здесь думаю основная вина ложится на владельцев блогов, пренебрегают своевременным обновлением как самого движка, так и плагинов.

            Ответить
            • Игорь:

              Безусловно. Обновления обновлениями, а меры безопасности нужно соблюдать.

              Ответить
      • Елена Олейникова:

        А я Джумлу все же осилила с помощью курса Е.Попова, но потом ушла на Вордпресс. Сейчас думаю, может, есть смысл снова посмотреть, как этот движок работает, может тогда, когда опыта было мало, она такой сложной казалась? И вообще, когда заходишь в конструктор сайтов к хостеру, глаза разбегаются, хочется уже что-то другое, а то Водрпресс да Вордпресс 🙂

        Ответить
        • Игорь:

          А я нет, не очень хочу что-то новое изучать. Осилил Joomla, создал сайт на ней, когда создал блог на WordPress, понял, что больше не хочу движки изучать. Хочу сосредоточится на выдаче контента, а какая «бумага» лучше, уже не интересует ))

          В принципе этих 2 систем достаточно, чтобы больше не заморачиваться с изучением всего остального. Для портала — Joomla, (но честно скажу) мне она перестала нравится, особенно линейка 1.6. 1.7 2.0 — много лишнего. Хотя, опять же, готовится новый курс Попова, он новую волну создаст.

          Если кто занимается плотно сайтостроением, тому ему нужно и Joomla знать, и WordPress, и движки магазинов, (я создавал на shop-script), чтобы удовлетворить запросы заказчиков. Но я пока что — пас в этих вопросах. Может быть, пока. Время покажет ))

          Ответить
          • Елена Олейникова:

            Да я тоже пока не буду, других дел много. В частности, хочется вплотную заняться анализом блогов. После курса Александра Бобрина почему-то появилось такое желание тоже научиться делать все, как положено. А то я обычно внимание только на контент и обращала, потом начинала голову ломать, почему-то же сайт буксует.

            Ответить
  12. Марина Савченко:

    Страницу в закладки и с утра буду применять на тестовом блоге.Должно получится.

    Ответить
    • Игорь:

      Пробуйте. На тестовом, должно получиться. )

      Ответить
  13. Владимир:

    Здравствуйте.

    Есть один вопросик. Как сделать так, чтобы шорткоды прописывались в админке чтобы не лезть в файл functions?

    Заранее спасибо

    Ответить
    • Игорь:

      Можно сделать так, но вряд ли я напишу об этом в ближайшее время. У меня не так много шорткодов, чтобы сейчас это делать.

      Ответить
  14. Анатолий:

    Игорь, большое спасибо за такую подробную статью! Оказывается, это совсем не сложно, а я так долго откладывал момент когда разберусь с шорткодами, только по той причине, что думал для этого понадобится уйма времени))

    Ответить
    • Игорь:

      Так, как я использую, совсем несложно. ))

      Ответить
  15. Елена:

    Игорь, спасибо за статью, прогуглила=)... Такой вопрос: у вас в подписи какой выводится плеер? Или не плеер?.. И, если не секрет, какой прописать код плеера в шорткоде? P.S. Я с html не очень=)

    Ответить
    • Игорь:

      Елена, я на этой неделю пост — ответ на ваш вопрос напишу и покажу, как выводить плеер в подписи. Двумя словами не получится объяснить.

      Ответить
  16. Ян:

    А как вывести текст на английском языке, так, чтобы я мог потом локализовать плагин или шаблон? Например такую конструкцию:

    Ответить
  17. Федор:

    Скрипт не получается вывести. Показывает ошибку. Скрипт вот такой:

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован.