С помощью Php code snippets вы легко можете выполнить php код, добавить рекламный блок или любой другой код внешнего виджета в любое место на вашем WordPress сайте. В этой небольшой документации мы подробнее рассмотрим, как вы сможете использовать все возможности нашего плагина.
Установка плагина
Краткое описание различных типов сниппетов.
Общие настройки плагина
Основные
Activate by Default | Необязательная опция. Если Вкл, то все созданные сниппеты будут активированы по умолчанию. |
Complete Uninstall | Необязательная опция. Если Вкл, то при удалении плагина, все данные (сниппеты, настройки) связанные с плагином тоже будут удалены. |
Редактор кода
Code style | Необязательная опция. Вы можете выбрать собственный стиль оформления кода в редакторе сниппетов. По умолчанию установлен стиль “Default”. |
Indent With Tabs | Необязательная опция. Whether, when indenting, the first N*tabSize spaces should be replaced by N tabs. Default is false. |
Tab Size | Необязательная опция. Когда вы нажимаете кнопку табуляции в редакторе кода, отступ от левого края редактора будет n символов. n – число, которое вы установили для этого поля. |
Indent Unit | Необязательная опция. В этом поле вы устанавливается отступ для строк кода. Например: если вы выделите часть кода и нажмете кнопку табуляции, то этот код получит отступ от левого края редактора на n символов. n – число, которое вы установили для этого поля. |
Wrap Lines | Необязательная опция. Если Вкл, редактор будет переносить длинные строки. Иначе будет создан горизонтальная полоса прокрутки. |
Line Numbers | Необязательная опция. Если Вкл, все строки в редакторе будутпронумерованы. |
Auto Close Brackets | Необязательная опция. Если Вкл, когда вы добавить открывающую скобку или кавычку, они будут автоматически закрыты. В некоторых случаях это ускоряет написание кода. |
Highlight Selection Matches | Необязательная опция. Если Вкл, то выделенная вами переменная или имя функции, будут подсвечены зеленым цветов в тех участках кода, где они повторяются, чтобы улучшить читаемость вашего кода. |
Создание сниппетов
Сниппеты это небольшие куски текста или кода, которые вы можете удобно хранить в админ панели WordPress и использовать для вставки в содержание страницы. Если вы еще не решились попробовать использовать сниппеты, то вот их некоторых преимущества:
- Избавляют от дублирование кода (вам не нужно копировать код или текст для нескольких страниц)
- Безопасность (никто кроме администратора, не может редактировать содержание сниппета)
- Гибкость (вы можете расставлять код или текст автоматически используя специальную логику или просто размещая шорткод в места, где нужно разместить сниппет)
- Простая миграция и очистка вашего сайта, если вам нужно удалить плагин (вам не нужно обходить все страницы, чтобы удалить код или текст сниппета)
Давайте подробнее рассмотрим, какой тип сниппета больше всего подойдет для решения ваших задач.
Создание PHP сниппета
Этот простой тип сниппетов, он применяется только для выполнения php кода. Если вы хотите выполнить какой-либо php код без вмешательства в исходный код вашей темы или ядра WordPress, это отличный вариант для вас. Большинство пользователей, возможно и вы в том числе, по прежнему используют файл function.php для размещения своих шаблонов php кода. Этот путь очень не удобен и создает дополнительные проблемы, такие как захламленность файла function.php и утрата ваших изменений при обновлении темы. Благодаря этому типу сниппетов вы можете удобно редактировать, сохранять и систематизировать ваш php код непосредственно в админ панели WordPress.
Настройка
Давайте создадим ваш первый php сниппет. Чтобы начать найдите в левом меню админ панели “Php snippets меню” и нажмите “+ Добавить сниппет“. Вы должны увидеть вот такой экран, см. скриншот:
Выберите тип сниппета “PHP сниппет” и нажмите кнопку “Create item“. После нажатия на кнопку вы попадете на страницу настроек сниппета.
Придумайте заголовок для сниппета, чем будет понятнее заголовок, тем проще вам будет найти этот сниппет среди других.
Самая большая область на странице настройки сниппетов, это редактор кода с подсветкой синтаксиса. Это многофункциональный редактор и он также может использоваться для html кода, но больше всего он походит для размещения php кода.
Внимание! Так как редактор приспособлен для php кода, Вы должны вводить php код без открывающих и закрывающих php тегов. То есть вы должны вводить только php код, редактор уже будет понимать, какой код он ожидает.
Примеры использования everywhere
Пример #1: Регистрация хука ‘init‘
add_action('init', 'cng_author_base'); function cng_author_base() { global $wp_rewrite; $author_slug = 'profile'; // change slug name $wp_rewrite->author_base = $author_slug; }
Примеры использования шорткодов
Пример #1: Показать контент, только авторизованным пользователям
Мы хотели бы скрыть какой-то контент от гостей, чтобы мотивировать их регистрироваться на вашем сайте. Давайте напишем код, который решит нашу проблему. Логика будет простой: если функция “is_user_logged_in” существует и пользователь авторизован и в переменную $content был передан какой-то текст, то мы печатаем текст, который содержится в переменной $content(
как текст попадает в эту переременную читайте ниже).
if ( function_exists( 'is_user_logged_in' ) && is_user_logged_in() && ! empty( $content ) ) { echo $content; }
Теперь нам необходимо обернуть контент, который мы хотим скрыть в специальные шорткоды. Атрибутами по умолчанию будут id сниппета и title заголовок сниппета.
[wbcr_php_snippet id="4034" title="Показать контент, если пользователь авторизован"] Это скрытый контент, который может увидеть только авторизованный пользователь. [/wbcr_php_snippet]
Шорткоды могут быть использованы внутри текстовых виджетов, в классическом редакторе WordPress, в редакторе Gutenberg, в плагинах и темах, которые поддерживают использование шорткодов.
Внимание! Контент, который вы оборачиваете шорткодами всегда будет доступен в сниппете через переменную $content. Вы должны обязательно что-то сделать с переменной $content, иначе контент, который находится между шорткодами будет вырезан из содержания страницы.
Пример #2: Показываем разные формы Contact form 7, если в url содержится параметр need_support
Очень популярный вопрос на нашем форуме поддержки: как использовать шорткод от другого плагина в php сниппете? Давайте напишем простой код, который будет выводить контактную форму в зависимости от параметра в url строке. Мы хотим показать форму для премиум поддержки, если пользователь перешел по ссылке https://site.loc/support?need_support=premium, а форму для бесплатной поддержки если пользователь перешел по такой ссылке https://site.loc/support?need_support=free. Создаем условие, если переменная запроса need_support существует и она не пуста, то мы выводим тот тип формы, который указан в значении переменной, иначе выводим форму по умолчанию.
if(isset($_GET['need_support']) && !empty($_GET['need_support'])) { switch($_GET['need_support']) { case 'premium': echo do_shortcode('[contact-form-7 id="12" title="Need premium support"]'); break; case 'free': echo do_shortcode('[contact-form-7 id="11" title="Need free support"]'); break; case 'other': echo do_shortcode('[contact-form-7 id="10" title="Need other support"]'); break; default: echo do_shortcode('[contact-form-7 id="9" title="Default contact form"]'); break; } }
Вы можете использовать абсолютно любые шорткоды от других плагинов, просто используя функцию do_shortcode от WordPress.
Пример #3: Считаем сколько дней осталось до футбольного матча
Мы покажем вам отличный пример, как избежать дублирования сниппетов. У нас есть футбольный сайт, в ближайшее время пройдет несколько футбольных матчей и мы хотим вывести сколько дней осталось до каждого матча, зная только дату начала матча. Некоторые пользователи создали бы несколько сниппетов для каждого матча отдельно, но у нас только изменяется дата начала матча, поэтому дублировать код не потребуется. Нам понадобится только 1 сниппет, который мы будем вставлять через шорткод. Только в атрибуте start_date использованного нами шорткода, мы будем передавать дату начала матча. Напишем простой код, который будет рассчитывать сколько дней осталось до начала матча из полученной даты переменную $start_date см. пример ниже.
if ( isset( $start_date ) && ! empty( $start_date ) ) { $check_time = strtotime( $start_date ) - time(); if ( $check_time <= 0 ) { return false; } $days = floor( $check_time / 86400 ); if ( $days > 0 ) { echo $days . ' days'; } }
Мы выведем на странице 3 матча и сколько осталось дней до их начала. Для каждого шорткода мы в атрибут start_date мы указали дату начала матча. Теперь все остальные расчеты сделает наш php код.
До матча Барселона vs Мадрид осталось: [wbcr_php_snippet id="4034" title="X дней осталось до матча #1" start_date="2019/01/25"] До матча Манчестер Юнайтед vs Бавария осталось: [wbcr_php_snippet id="4034" title="X дней осталось до матча #2" start_date="2019/01/15"] До матча Челси vs Ювентус: [wbcr_php_snippet id="4034" title="X дней осталось до матча #3" start_date="2019/01/29"]
Создание текстового сниппета
Это самый простой тип сниппетов в котором может быть использован только текст и html код, он работает аналогично классическом редактору TinyMce. Мы создали этот тип сниппетов для простых текстовых сообщений. Чтобы Вы использовали оригинальные подписи для ваших статей, создавали часто используемые цитаты или выдержки из документации. Благодаря этом типу сниппетов, вы можете вставить ваш текстовый блок на все страницы ваших статей, а не вставлять его каждый раз при создании новой статьи.
Настройка
Давайте создадим ваш первый текстовый сниппет. Чтобы начать найдите в левом меню админ панели “Php snippets меню” и нажмите “+ Добавить сниппет“. Вы должны увидеть вот такой экран, см. скриншот:
Придумайте заголовок для сниппета, чем будет понятнее заголовок, тем проще вам будет найти этот сниппет среди других.
Создание универсального сниппета
Это сложный тип сниппетов, в котором вы можете комбинировать php, html, javascript и css код. Мы создали этот тип сниппетов для удобного добавления рекламного кода, различный виджетов от внешних сервисов, сложных html форм, Google аналитики, Яндекс метрики, Facebook пикселя и т.д. Универсальные сниппеты могут быть размещены автоматически на всех страницах в зависимости от условной логики.
Настройка
Давайте создадим ваш первый универсальный сниппет. Чтобы начать найдите в левом меню админ панели “Php snippets меню” и нажмите “+ Добавить сниппет“. Вы должны увидеть вот такой экран, см. скриншот:
Придумайте заголовок для сниппета, чем будет понятнее заголовок, тем проще вам будет найти этот сниппет среди других.
Дополнительные настройки сниппетов
Description – Вы можете написать в это поле короткое описание сниппета, чтобы ваши сотрудники или администраторы понимали, для чего используется этот код или текст.
Придумайте заголовок для сниппета, чем будет понятнее заголовок, тем проще вам будет найти этот сниппет среди других.
Available attributes – В этом поле вы можете установить список атрибутов разделенных запятой, которые могут быть переданы через шорткод в сниппет. Например: мы добавим в это поле два новых атрибута place и user, теперь шорткоды для этого сниппета могут принимать 2 новых атрибута [wbcr_php_snippet id=”4034″ place=”home_page” user=”admin”], а переданные значения для этих атрибутов будут доступны в коде сниппета, как переменные $place и $user.
Область применения
Everywhere (только для php сниппетов) – Используется для регистрации функций, классов, хуков или глобальных переменных. Допустим, вы хотите использовать php функцию в других сниппетах, но не хотите писать этот код функции для каждого сниппета. Вам нужно просто создать новый сниппет и выбрать вариант размещения “Everywhere”. Таким образом ваша функция будет доступна на всем сайте. Этот вариант размещения аналогичен файлу function.php (если бы вы разместили код в этом файле, вы получили бы аналогичный эффект).
Shortcode – Используется для вывода какого-то содержимого на определенной странице или внутри виджета. У этого способа размещения могут быть очень много способов применения, например вам нужно напечатать сколько дней осталось до футбольного матча или вы хотите показать часть контента только для авторизованных пользователей.
Automatic insertion (только для текстовых и универсальных сниппетов) – Позволяет автоматически размещать текстовые и универсальные сниппеты в любом месте на вашем сайте. Это очень удобно, если вы хотели бы например разместить рекламный код вконеце каждой записи или страницы.
Возможные места размещения
На всем сайте:
- Header – сниппет будет размещен в исходном коде страницы перед тегом </head>
- Footer – сниппет будет размещен в исходном коде страницы перед тегом </body>
Записи, страницы, произвольные записи:
- Before Post – сниппет будет размещен в исходном коде страницы перед тегом </head>
- Before Content – cниппет будет размещен перед содержимым записи/страницы
- Before Paragraph – cниппет будет размещен перед параграфом, номер которого можно указать в поле Location number
- After Paragraph – cниппет будет размещен после параграфа, номер которого можно указать в поле Location number
- After Content – cниппет будет размещен после содержимого записи/страницы
- After Post – cниппет будет размещен в конце записи/страницы
Категории, архивы, теги, таксономии:
- Before Excerpt – сниппет будет размещен перед кратким содержимым записи/страницы
- After Excerpt – сниппет будет размещен после краткого содержимого записи/страницы
- Between Posts – сниппет будет размещен между каждой записью
- Before post – сниппет будет размещен перед записью, номер которой можно указать в поле Location number
- After post – Сниппет будет размещен после записи, номер которой можно указать в поле Location number
Условия отображения
Короткое описание раздела.
Как вставить шорткод сниппета в тектовом виджете?
Вы можете использовать шорткоды сниппетов в произвольных текстовых виджетах. Это может вам пригодиться в тех случаях, когда вы хотите разместить рекламный блок в сайдбаре или в футере вашего сайта.
- Перейдите на страницу “Widgets”
- Добавьте новый текстовый виджет в ваш сайдбар
- Если вам нужно передать контент виджета в сниппет, выделите контент внутри виджета (если нет, просто установите курсор в текстовое поле).
- На панели инструментов редактирования виджета найдите иконку нашего плагина и нажмите на нее, после чего вы должны выбрать любой из доступных сниппетов (в этом списке могут быть только активные сниппеты и с областью применения, только через шорткод).
Как вставить шорткод сниппета в классическом редакторе?
Вы можете использовать шорткоды сниппетов внутри записей, страниц, произвольных записей. Мы покажем вам пример вставки шорткода сниппета в классическом редакторе WordPress.
- Перейдите в раздел “All posts”
- Выберите запись для редактирования
- Если вам нужно передать контент статьи в сниппет, выделите контент внутри статьи (если нет, просто установите курсор в текстовое поле).
- На панели инструментов редактирования статьи найдите иконку нашего плагина и нажмите на нее, после чего вы должны выбрать любой из доступных сниппетов (в этом списке могут быть только активные сниппеты и с областью применения, только через шорткод).
Как вставить шорткод сниппета в редакторе Gutenberg?
Краткое описание различных типов сниппетов.
Как перенести php код из старой версии плагина 1.3 в новую 2.x.x?
Краткое описание различных типов сниппетов.
Решение проблем с плагином
Краткое описание различных типов сниппетов.