Лучший способ разрешить плагины для PHP-приложения. Плагины — Документация Webasyst Безобидный plugin php

В этом руководстве мы подробно рассмотрим как создать плагин WordPress со своей собственной страницей администрирования. Характерная особенность любого плагина – это отделение своего кода от кода ядра WordPress. Если с плагином что-то произойдёт, остальная часть сайта будет работать.

  • Текстовый редактор

Для выполнения шагов этого руководства вам понадобиться текстовый редактор, например, Notepad++ или среда разработки NetBeans . Также вам нужен доступ по FTP в вашей учётной записи на хостинге и .

Данное плагин WordPress руководство написано для тех, кто уже имеет . По руководству мы создадим новую функцию, вызовем существующие функции WordPress, используя их как параметры.

Что такое плагин WordPress?

Плагин WordPress – это автономный код, который улучшает и расширяет функциональность WordPress. Используя любую комбинацию PHP, HTML, CSS, JavaScript/jQuery или ряда других языков программирования, плагин WordPress может добавить новые характеристики к любой части вашего сайта, включая Консоль Администрирования. Вы можете изменять поведение WordPress по умолчанию или полностью удалять ненужное поведение. Плагины позволяют легко настраивать WordPress под себя и свои потребности.

Поскольку плагин WordPress это отдельный код, он не пересекается непосредственно с какой либо частью кода ядра WordPress. Плагин может быть скопирован или установлен на любую установку WordPress. Альтернативный (и очень не рекомендуемый) путь внесения изменений в WordPress – написание новой функции в файл WordPress functions.php , который находится в каталоге /wp-includes/ или в файл functions.php , который является частью вашей темы. Это может привести к ряду возможных проблем.

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

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

Что такое хук (hook)?

Плагины WordPress взаимодействуют с кодом ядра через так называемые хуки (hooks , от англ. hook – крючок). К ним, как к крючкам можно “цеплять” выполнение каких-либо интересных нам функций. В WordPress есть два вида хуков:

  1. Action hooks или хуки-события (добавить/удалить пользовательскую функцию к некоторому событию).
  2. Filter hooks или хуки-фильтры (для изменения данных, обрабатываемых функциями).

События и Хуки-события

Посещение любой страницы WordPress-сайта – это вызов множества функций PHP (называемых событиями – actions ). Функции привязываются к хукам-событиям (action hooks) . Механизм хуков-событий предоставляется WordPress. Вы можете добавлять свои функции к какому-либо событию из списка событий, используя механизм хуков и они будут запускаться по запуску этого события. Вы также можете удалять уже существующие функции из любого списка хуков-событий. Хуки-события привязаны к выполнению определённого события. Например, перед закрытием тега на любой странице, вызывается хук-событие wp_head() и запускается ряд функций, которые привязаны к этому хуку wp_head() .

Добавление функций на хук события, используя add_action()

Чтобы добавить функцию на любой хук-событие, ваш плагин WordPress должен вызвать функцию WordPress под названием add_action() , как минимум с двумя параметрами.

// Хук события "init", вызывается после того, как WordPress завершает загрузку кода ядра add_action("init", "add_Cookie"); // Установка cookie с текущим временем дня function add_Cookie() { setcookie("last_visit_time", date("r"), time()+60*60*24*30, "/"); }

  • хука-события (action hook) , к которому собираемся связать свою функцию.
  • Второй обязательный параметр – имя функции (function) , которую будем запускать.
  • приоритет (priority) функции, которую вы собираетесь запустить. Вы можете привязать сколько угодно функций к одном хуку события и обращаться к ним в любом порядке. Приоритет запуска по умолчанию – 10, ваша функция запускается сразу после встроенных функций WordPress. Функция с приоритетом 11 запустится следующей и так далее.
  • количество аргументов , означает сколько параметров ваша пользовательская функция может принять. По умолчанию количество параметров равно 1.

Пример кода плагина для отображения текста после раздела футера (footer) на каждой странице

Этот плагин WordPress перехватывает хук-событие wp_footer() , который вызывается сразу перед закрытием тега на каждой странице и добавляет новую функцию под названием mfp_Add_Text() . Так как плагин WordPress не привязывается к теме, то функционал будет работать даже при смене темы на другую. Можете сохранить себе этот пример в файл PHP, загрузить его в каталог wp-content/plugins/ и активировать в Админ Консоли, чтобы увидеть изменения.

"; } ?>

Вот результат:

Примечание: PHP загружает содержимое сразу всего скрипта перед его выполнением, это значит, что вы можете вызвать add_action() перед определением вашей функции: вызвать add_action() с вашими функциями вначале файла в том порядке, в котором они будут загружаться, потом определить ваши функции в таком же порядке ниже. Такое структурирование кода сделает файл более лёгким для чтения.

Удаление функций из хуков-событий, используя remove_action()

Для удаления функции, связанной с хуком-событием, нужно воспользоваться remove_action() . Пример ниже поможет понять принцип работы добавления и удаления функций в/из хука событий.

// Хук на событие "init", который вызывается после завершения загрузки ядра WordPress и функция "remove_My_Meta_Tags" add_action("init", "remove_My_Meta_Tags"); // Удаляем функцию "add_My_Meta_Tags" из хука-события wp_head function remove_My_Meta_Tags() { remove_action("wp_head", "add_My_Meta_Tags"); }

Запускается remove_action() как минимум в двумя параметрами.

  • Первый обязательный параметр – название хука-события (action hook) , к которому функция была прикреплена
  • Второй обязательный параметр – это имя функции (function) , которую вы хотите удалить
  • Третий (необязательный) параметр – это приоритет удаляемой функции. Этот параметр должен совпадать с тем приоритетом, который был задан при добавлении события к хуку событий. Если он не был определён, не включайте этот параметр.

Пример: представим, что вы хотите, чтобы текст, добавленный в футере в предыдущем примере, не выводился по понедельникам. Один из путей реализации этого, использовать функцию даты в PHP, чтобы получить текущий день недели, проходя условным оператором if…then… и проверяя соответствует ли текущий день понедельнику, затем вызвать remove_action(), если это понедельник. Вызываем функцию проверки и удаления по дню недели при помощи add_action() , прикрепляясь к событию, происходящему раньше (например, wp_head ), чем то, к которому прикреплено наше основное действие выведения текста в футере (wp_footer) . Если мы выберем событие происходящее позже, чем wp_footer , удаления не произойдёт, поскольку страница уже будет сгенерирована.

После загрузки футера сайта добавляется мой текст!

"; } // Определение функции "mfp_Remove_Text()" удаление нашей предыдущей функции из события "wp_footer" function mfp_Remove_Text() { if (date("l") === "Monday") { // Target the "wp_footer" action, remove the "mfp_Add_Text" function from it remove_action("wp_footer", "mfp_Add_Text"); } } ?>

Фильтры и хуки-фильтры

Функции фильтры позволяют изменять возвращаемые другими функциями данные и должны быть прежде перехвачены при помощи хуков-фильтров . Хуки-фильтры несколько отличаются от хуков-событий. Однако, работают они подобно хукам-событиям – могут быть вызваны в разных точках скрипта и контекстно. Полный список хуков-фильтров и контекста вызова можно найти на WordPress Plugin API/Filter Reference page.

Добавление фильтров, используя add_filter()

Чтобы добавить любую функцию к хуку-фильтру, ваш плагин должен вызвать функцию WordPress под названием add_filter() , с как минимум двумя параметрами.

// Перехват хука-фильтра "the_content" (содержимое любого поста), запуск функции "mfp_Fix_Text_Spacing" add_filter("the_content", "mfp_Fix_Text_Spacing"); // Автоматическое исправление двойного пробела function mfp_Fix_Text_Spacing($the_Post) { $the_New_Post = str_replace(" ", " ", $the_Post); return $the_New_Post; }

  • Первый обязательный параметр – это название хук-фильтра (filter hook) , на который хотим повесить функцию.
  • Второй параметр – это имя функции фильтра (filter function), которую хотим запустить.
  • Третий параметр (необязательный) – это приоритет (priority) функции, которую вы хотите запустить. В хуку-фильтру можно добавить сколько угодно разных фильтров функций. Приоритет по умолчанию – 10, устанавливает очередь вашей пользовательской функции после любой встроенной функции. Функция с приоритетом 11 запустится следующей и так далее.
  • Четвёртый параметр (необязательный) – это количество аргументов , который означает сколько параметров ваша пользовательская функция может принять. По умолчанию количество параметров равно 1.

Пример. Плагин WordPress для изменения фрагмента/выдержки записи

В WordPress есть функция, которая извлекает отрывок (цитату) из записи, называется она get_the_excerpt() , и также является хуком-фильтром. Функция, отображающая отрывок, вызывает get_the_excerpt(), чтоб его получить, это то место, где применяется фильтр и отрывок изменяется до отображения. Этот плагин WordPress определяет функцию фильтр, которая берёт отрывок текста как входной параметр, добавляет некоторый текст вначале него и возвращает новое значение каждый раз, когда вызывается get_the_excerpt() . Так как возвращаемое функцией get_the_excerpt() значение – это фактический фрагмент текста, он автоматически вводится как параметр функции $old_Excerpt, когда вызывается, используя add_filter(). Функция, которую вы определяете должна вернуть новое значение .

Excerpt: " . $old_Excerpt; return $new_Excerpt; } ?>

Итоговый результат:


Удаление фильтров, используя remove_filter()

Для удаления фильтра нужно просто вызвать функцию remove_filter() . Например, добавим снова простое условие и будем удалять текст, если сегодня четверг.

// Хук-фильтр get_the_excerpt, запуск функции mfp_Add_Text_To_Excerpt add_filter("get_the_excerpt", "mfp_Add_Text_To_Excerpt"); // Если сегодня четверг, удалить фильтр the_excerpt() if (date("l") === "Thursday") { remove_filter("get_the_excerpt", "mfp_Add_Text_To_Excerpt"); } // Взять отрывок, добавить текст и вернуть новый отрывок function mfp_Add_Text_To_Excerpt($old_Excerpt) { $new_Excerpt = "Excerpt: " . $old_Excerpt; return $new_Excerpt; }

Теперь, когда уже есть базовое представление о хуках фильтрах и событиях, создадим простой плагин WordPress, который добавляет новую ссылку и страницу в Админ Консоль.

Шаг 1 – Сохранение плагина

Первым шагом в создании плагина для WordPress является создания каталога для хранения всех файлов. Все плагины хранятся в каталоге: /wp-content/plugins/ . Каталог, который вы создаёте должен иметь уникальное и понятное название, не пересекающееся с другими плагинами. Поключитесь к своему аккаунту на хостинге по FTP . Из основного каталога WordPress перейдите в wp-content потом в plugins . Внутри каталога plugins создайте новый каталог с названием my-first-plugin .


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

Шаг 2 – Создание первого файла

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

В вашем каталоге my-first-plugin создайте новый PHP-файл и назовите его my-first-plugin.php . Хорошей практикой является название основного файла плагина также как и каталога. Добавьте открывающий тег PHP в первой строке. Вам не обязательно добавлять закрывающий тег в конце файла (чтобы понять почему, почитайте примечание на странице PHP мануала). Этот файл будет содержать прежде всего так называемые ‘header comments’ или заголовочные комментарии с информацией, которая будет прочитана и отображена WordPress. Header comments заключается в многострочный комментарий PHP, в каждой строке определяется специальная информация, начинающаяся со специальных символов, чтобы можно было определить, к чему эта строка относится. Такая структура должна присутствовать только в первом файле и её не нужно повторять в остальных.

Первой строкой в комментарии в файле my-first-plugin.php нужно добавить имя плагина. Начинайте многострочный комментарий PHP открывая его символами /* во второй строке файла, сразу после тега открытия PHP. В третьей строке напишите Plugin Name: My First Plugin. В двух следующих отдельных строкахможно указать описание плагина и имя автора.Затем, со следующей строки закрываем блок комментариев символами */ . Ваш файл теперь выглядит примерно так:

Имя автора .

Шаг 3 – Написание функций плагина

Как уже было сказано выше, хорошей практикой является разделение кода плагина в соответствующие файлы и каталоги. Так как основная функция первого файла в том, чтобы содержать в себе информацию о плагине, то сам плагин WordPress разместим в других файлах и каталогах и воспользуемся функцией PHP ‘include’ для доступа к ним. Любые файлы, хранящиеся в подкаталогах вызываются прямо из нашего кода и только из нашего кода, поэтому имя подкаталога не нуждается в префиксе. Однако, весьма рекомендуем применять уникальный префикс для ваших файлов, функций и переменных, чтобы избежать конфликтов с другими плагинами. В связи в этим мы будем использовать префикс mfp , сокращение от ‘My First Plugin’.

В главном каталоге вашего плагина создайте новый подкаталог с названием includes. Любой файл, который будет подключатся по ‘include’ в другом файле будет идти в этот подкаталог. Создайте новый файл PHP в подкаталоге includes и сохраните его как mfp-functions.php. Открываем тег в первой строке. В этом новом файле будут храниться функции вашего плагина.

Теперь вернитесь к my-first-plugin.php в основном каталоге плагина. Нам нужно подключить файл mfp-functions.php , для того чтобы использовать новые функции. Так как это главный файл плагина, подключение mfp-functions.php здесь сделает функции доступными в любом другом файле вашего плагина. Используйте require_once , чтобы один раз подключить файл с функциями и чтобы быть уверенным, что плагин работает только, если функции доступны. Самый простой путь подключения файлов из вашего каталога плагинов – это использование функции WordPress plugin_dir_path(__FILE__) , которая выдаёт полный путь к директории, где наш плагин WordPress хранится, потом использовать . (period), чтобы дополнить именем подкаталога, который мы создали раньше (includes ), затем имя созданного нами файла (mfp-functions.php ).

Редактируем my-first-plugin.php как показано ниже, потом сохраняем и загружаем ещё раз, перезаписывая предыдущую версию.

Вернёмся к mfp-functions.php в подкаталоге includes .

Хорошая идея объединить несколько функций вместе и написать многострочный комментарий над каждой группой, описывая группу, затем короткий однострочный комментарий перед каждой из функций с её описанием. Таким образом вам не придётся читать весь код в поисках функции и распознаванию, что она делает. Назовём функцию mfp_Add_My_Admin_Link(). Она будет добавлять новую верхнюю ссылку в Админ Консоли в меню навигации.

Резюмируя, пишем новую функцию следуя этим шагам:

  • Пишем комментарии, описывающие функцию
  • Называем функцию
  • Пишем функцию

В mfp-functions.php, пишем следующее:

Внутри нашей функции нам нужно использовать встроенную функцию WordPress add_menu_page() , чтобы задать имя меню, заголовок и определить, кто может её видеть. Затем мы говорим, что отображать, когда мы переходим на страницу. Вы можете также добавить к ссылке в меню иконку и установить её позицию в меню навигации админ панели – и то и другое по желанию, поэтому в нашем руководстве мы на этом не будем останавливаться. Рядом со ссылкой на вашу страницу будет отображаться иконка по умолчанию. Наша ссылка появится внизу меню навигации админ консоли. Вся эта информация вводится как параметры в add_menu_page() .

Четыре необходимых параметра add_menu_page() – каждый с новой строки для лучшей наглядности:

  1. Название страницы, которую вы увидите после нажатия на ссылку (отображается во вкладке браузера).
  2. Текст, отображаемый в ссылке меню (отображается в списке навигации Админ Консоли), это может быть название вашего плагина.
  3. Требования к возможностям пользователя видеть меню, в этом примере только пользователи с возможностью ‘manage_options’ могут иметь доступ к странице (об этой сейчас не беспокойтесь).
  4. Какой файл использовать, когда открывать страницу (мы создадим его за следующим шагом), который будет храниться в подкаталоге includes и называться mfp-first-acp-page.php. URL введённый здесь известен как ‘slug’.

Прежде чем мы продолжим, важно знать, что есть альтернативный путь использования этой функции. Четвертый параметр может быть просто строкой текста, которая отображается в ссылке url после ‘wp-admin/admin.php?page=’ . Если вы введёте ‘my-plugin-page’, URL станет ‘wp-admin/admin.php?page=my-plugin-page’ . Четвёртый параметр тогда должен быть именем функции, которая выводит что-либо. Вы можете написать функцию, которая лишь выводить ‘Welcome to page 1’, например. Значительно проще создать PHP файл, который будет содержать вашу страницу.

Редактируем mfp-functions.php, удаляем // My code goes here, заменяем его на add_menu_page() и передаём параметры, как показано ниже:

Чтобы запустить эту функцию нам нужно использовать функцию WordPress под названием add_action() с двумя параметрами, как описано в разделе ‘Добавление функций на хук-событие’ этого руководства. Вы можете перечитать этот раздел перед тем, как продолжить.

  • Первый параметр – action hook, который вы хотите отловить. В нашем случае хук события это admin_menu – это значит, наша функция загружается тогда, когда Админ меню начинает генерироваться.
  • Второй параметр – просто имя запускаемой функции. Функция, которую мы написали называется mfp_Add_My_Admin_Link . Обратите внимание, что круглые скобки здесь не пишутся. Помните, что PHP загружает весь скрипт до его запуска, позволяя вам использовать add_action() раньше определения функции, указанной в параметре 2.

Наш окончательный файл выглядит так:

Загрузите файл mfp-functions.php в каталог includes и перезапишите старый.

Шаг 4 – Создание новой админ-страницы

Теперь можно создать страницу, которая будет отображаться при нажатии на ссылку в вашей админ консоли. Вернитесь в подкаталог includes и создайте новый файл PHP с названием mfp-first-acp-page.php. Открывающий тег PHP не обязателен в этом файле, поскольку мы будем использовать только HTML. Напишите HTML-код, как показано ниже и загрузите файл.

Привет!

Это первая страница плагина:)

При создании админ страниц, WordPress рекомендует заключать свой HTML в теги div и давать ему имя класса “wrap”, как показано выше. Это гарантирует, что весь ваш контент появится в правильном месте и будет выглядеть также как и другие админ страницы. Если не придерживаться этой рекомендации, страница может выглядеть не очень привлекательно.

Вернитесь к списку плагинов WordPress в Админ Консоли и активируйте его. Как только страница загрузится, посмотрите вниз мену навигации админ панели. Здесь вы увидите новую ссылку с именем ‘My First Plugin’. Нажмите на неё и вы увидите свою родную страницу админ управления!

Заключение

Поздравляем, вы только что создали свой первый плагин WordPress, добавили новую ссылку в админ меню и отобразили новую страницу в Админ Консоли! Кажется, что это не так уж и много, но это первые уверенные шаги. Теперь, опираясь на полученные знания, вы можете изменять функционал WordPress так, как вам потребуется. Больше знаний о WordPress

7-мая версия PHP увидела свет в недавнем 2015 году. Новый виток в развитии этого языка программирования принес много возможностей для всех тех, кто использует PHP . Среди преимуществ новой версии следует выделить скорость. Так, по данным разработчиков, скорость работы скриптов на PHP 7 , по сравнению с предыдущими версиями, возросла почти в два раза. В связи с этим, многие владельцы сайтов, на которых установлены более старые версии PHP , хотят перейти на новую.

Зачем проверять на совместимость?

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

Как проверить на совместимость с PHP 7.0?

Плагин PHP Compatibility Checker

Плагин PHP Compatibility Checker позволяет просканировать весь сайт и указать, какие из его компонентов (темы, плагины) не совместимы с выбранной версией PHP . Для начала необходимо его установить и активировать, после чего в админ-панели перейти Инструменты -> PHP Compatibility .

Как видим, плагин предлагает весьма понятные настройки. Для начала проверки необходимо выбрать версию PHP , на совместимость с которой хотите проверить сайт (блок PHP Version ). Удобной функцией плагина является выбор статуса проверяемых компонентов. Доступны на выбор два варианта: либо проверять среди активных тем и плагинов, либо в неактивных (поле Plugin / Theme Status ). Для старта проверки нужно нажать кнопку Scan site again .

Результат проверки также можно загрузить в текстовом файле, нажав для этого кнопку Download Report .

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

Хочу Вам рассказать в данной статье об этом и как можно вставить php код в wordpress без использования плагина и с использованием плагина. Вы также узнаете все нюансы и тонкости, плюсы и минусы, которые Вас могут поджидать при выполнении этой функции на WordPress.

Иногда возникает простая необходимость при создании сайта, чтобы вставить php код в wordpress в записях, на страницах или в сайдбаре. Я сам с этим столкнулся однажды и когда я попытался просто вставить php код в сайдбаре, он был выведен как обычный текст. То есть не был исполнен как функция.

Зачем нужно исполнение кода php на WordPress в постах, на страницах и в сайдбаре? Это каждый вебмастер решает сам для себя! Например возникла необходимость вставки в свои посты какого либо скрипта созданного на php коде или нужно вывести какое-то необычное меню в сайдбаре, мало ли.

Так вот, что бы вывести исполняемый код php в WordPress необходимо сделать некоторые действия, а какие именно, мы с вами сейчас узнаем...

Как вывести исполняемый PHP код в WordPress без плагина?

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

Для этого вам будет нужно внести некоторые изменения в файл functions.php вашей активной темы оформления сайта. Просто добавьте туда вот такой код в самом конце перед знаком "?> " :

/* чтобы вставить исполняемый код php в статьях/страницах WordPress, используйте этот шорткод: код */ function exec_php($matches){ eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean();"); return $inline_execute_output; } function inline_php($content){ $content = preg_replace_callback("/\((.|\n)*?)\[\/exec\]/", "exec_php", $content); $content = preg_replace("/\((.|\n)*?)\[\/exec\]/", "$1", $content); return $content; } add_filter("the_content", "inline_php", 0);

Затем используйте вот этот шорткод в своих записях и статьях для вставки исполняемого php кода:

Здесь php код

  • Небольшое уточнение, которое является очень важным моментом для правильного отображения и вывода php кода в ваших записях на сайте!

Обязательно, когда Вы будете внедрять свой php код в шорткод, не используйте вот это: «»! То есть ваш исполняемый php код вставляемый в шоткод должен выглядеть не так " " , а вот так "echo date ("Y"); " . И в конечном итоге, когда Вы вставите его в шорткод, он будет выглядеть вот так:

Echo date("Y");

  • Еще одно предупреждение для начинающих вебмастеров!

Исполнение таким образом php кода в ваших записях на WordPress делает ваш движок уязвимым для разного рода хакеров — взломщиков, которые могут им воспользоваться в своих корыстных целях. Для этого Вы должны изменить значение "exec " в коде, который вставляется в файл functions.php на свой, который известен только вам! И соответственно использовать это же значение в шорткодах для вставки в записях.

Этим действием Вы сможете избежать того, что кто-то сможет воспользоваться потенциальной «дырой», образовавшейся в результате использования данной функции — вставить php код в wordpress.

Это то, что касается вставки php кода в WordPress без использования плагина.

А теперь давайте узнаем, как можно еще вставить php код в WordPress, но уже при помощи плагина...

Как внедрить исполняемый PHP код в WordPress с плагином Exec-PHP?

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

Я вам сейчас расскажу о самом безопасном и наиболее функциональном плагине для исполнения php кода в WordPress — это Exec-PHP . Для начала его нужно скачать или с официального сайта WordPress или просто установить из своей админки на сайте. Надеюсь Вы знаете как это делается?! Если не знаете, то посмотрите . Там есть и видео ролик, в котором Вы сможете все увидеть воочию. Хоть там речь идет об установке другого плагина, но принцип один и тот же.

После установки и активации плагина в вашем основном меню админки появится :

Нажмите на нее и Вы попадете в :

Выберите здесь выполнять/игнорировать PHP код в виджетах и все.

Затем, чтобы Вы смогли вставить исполняемый php код в wordpress в записях и на страницах, Вы должны у себя в профиле установить галочку в пункте — :

Все. Теперь вы сможете добавить на свои страницы и в записи любой php код в wordpress и он будет исполнен!

Спасибо за внимание! Всем удачи! До новых встреч!

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

Давайте будем честны, ведь вы хоть раз делали это, не так ли? И это понятно, ведь на форуме так и было написано - добавьте этот код в functions.php вашей темы на WordPress.

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

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

Что такое functions.php

Если вы когда либо лазили по файлам вашего WordPress сайта, вы могли наткнуться на несколько файлов functions.php. Файл functions.php, о котором мы будем говорить в этом уроке, находится в папке: wp-contentthemesваша_темаfunctions.php.

Очевидно, это тот самый файл, который хранит все функции и настройки вашей конкретной темы, активной в данный момент . Обратите внимание на слово "активной", потому как в этом и будет крыться основной посыл этого урока.

Почему всегда использовать functions.php - это плохая идея

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

Причина №1.

Если выйдет обновление для вашей темы оформления, вы потеряете всё, что вы дописали в файле functions.php. Я знаю, о чем вы только что подумали - но ведь есть как раз для таких ситуаций?

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

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

Причина №2.

Даже если вы правильно настроили и используете дочернюю тему. Что случится, если вы захотите перейти на другую тему оформления? Я надеюсь, вы добавили комментарий к каждому внесенному изменению в вашем файле functions.php, потому как без этого переход на другую тему будет крайне болезненным. Думаю, вы уловили мысль.

Причина №3.

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

Когда можно использовать functions.php

Правильное использование functions.php для дочерней темы, активной в данный момент - это допустимый вариант. Но помните, я акцентировал внимание на этом слове "активной "?

Если вы добавляете порции кода, которые будут иметь смысл только в работе с конкретно этой темой, тогда вы можете смело использовать functions.php (в дочерней теме). Вот несколько примеров, когда это будет уместно:

  • Добавление еще одного файла стилей (.css) для вашей темы
  • Изменение длины для анонса записи (post excerpt), чтобы сайт выглядел лучше
  • Добавление кастомных шрифтов для текущей темы
  • Добавление файла локализации для перевода текущей темы

Другими словами, каждый раз при добавлении или изменении чего-либо, связанного с конкретной текущей темой, вы можете смело использовать functions.php.

Когда лучше обойтись без functions.php

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

Вот пару примеров, когда лучше обойтись без functions.php:

  • Создание кастомных виджетов, которые вы будете часто использовать
  • Создание кастомных шорткодов
  • Добавление кода, который не зависит от темы оформления (код Google Analytics и т.д.)

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

Вы сейчас подумали - ломать голову над созданием плагина, когда можно отредактировать functions.php? Это слишком сложно! Поверьте, это не так. Это делается очень легко и быстро.

Как настроить кастомный плагин вместо functions.php

Чтобы создать свой кастомный плагин для хранения вашего кода, вам нужно:

  1. Создать текстовый файл с вашим кодом и сохранить его как.php файл
  2. Запаковать полученный.php файл в.zip архив
  3. Установить этот архив как обычный WordPress плагин в меню Плагины → Добавить новый

Вот и все, всего 3 действия.

Шаг 1. Создание.php файла с вашим кодом

Откройте Блокнот на вашем компьютере и вставьте следующий текст:

Конечно, вы можете использовать свое имя для плагина в строке Plugin Name:

Сохраните файл и дайте ему какое-то уникальное имя, чтобы WordPress не перепутал ваш плагин с уже установленными. Например: wpcafe-custom-functions.php.

Да, не забудьте при сохранении выбрать тип файлов "Все файлы" и дописать расширение.php:

Шаг 2. Создайте.zip архив

Думаю, тут не нужно никаких пояснений. Просто создайте.zip архив с вашим файлом любым удобным архиватором.

Шаг 3. Установите как обычный плагин

Самая простая часть. Просто зайдите в админке WordPress в Плагины → Добавить новый и загрузите ваш архив как самый обычный плагин.

Как только вы активируете его, вы сможете увидеть свой новый плагин в списке всех других установленных плагинов:

Как добавлять свой код

Чтобы добавить свой фрагмент кода, просто вставляйте его в файл.php, который вы создали. Или вы всегда можете сделать еще один отдельный плагин для двух разных функций.

Например, вот так будет выглядеть ваш файл.php, если вы захотите сделать шорткод "Hello World!":

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

Просто оберните свой комментарий в синтаксис из косой и звездочки: /* Ваш комментарий */

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

Другие способы как избегать правок functions.php

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

Но мы прекрасно понимаем, если у вас нет желания возиться со всем этим вручную. Все же, это WordPress. Поэтому вам может пригодиться бесплатный плагин Code Snippets , который позволяет легко добавлять ваш дополнительный код на сайт:

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

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

Итоги

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

Так что, этот метод действительно заслуживает внимания.

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

Конечно, проще и привычнее пойти традиционным путем и тупо вставить сниппет в файл functions.php вашей активной темы. Но в 9 из 10 случаев будет целесообразнее и правильнее вынести код сниппета в отдельный плагин . В крайнем случае, добавить его в специальный функциональный плагин вашего сайта. Т.н. Site-Specific WordPress Plugin , в котором-то и будет храниться весь дополнительный функционал вашего сайта.

Зачем это нужно

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

Как же быть

Нужно понять простую истину. В файле функций темы должны располагаться только функции, относящиеся к дизайну вашего сайта. Конкретно к той теме, файл функций которой редактируется. А вся т.н. «механика», рабочий функционал сайта и все его кастомизации правильнее размещать в плагинах. Или в одном плагине. Тогда при смене темы, он останется нетронутым.

Создаем специальный плагин функций WordPress

На самом деле, все делается очень просто.

  • В директории плагинов вашего WordPress создаете папку. Например: /wp-content/plugins/mysite-plugin/ ;
  • Создаете в этой папке файл, назвав его, к примеру, my-plugin.php ;
  • Вставляете в этот файл примерно такой код:
  • Переходите в настройки управления плагинами и активизируете свой новый плагин.

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

На этом можно и остановиться, но с моей стороны было бы не совсем правильно не упомянуть про т.н. MU-плагины .

MU-плагины (Must Use Plugins)

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

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

Преимущества MU-плагинов

  • MU-плагины не нужно активировать, они всегда активны, их невозможно отключить в консоли управления сайтом;
  • MU-плагин подключается и активируется банальной закачкой файла плагина в директорию mu-plugins;
  • MU-плагины загружаются в алфавитном порядке перед загрузкой обычных плагинов.

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

В заключение

Как видите, ничего принципиально сложного в использовании функциональных плагинов нет. А преимущества их использования налицо. Мне не раз приходилось слышать такое мнение, что плагины создают на сайт какую-то неимоверную нагрузку. У многих пользователей существуют некие предубеждения о вреде использования плагинов. Это не совсем верно. Вред могут нанести левые, неизвестно кем разработанные и неизвестно откуда скачанные плагины. Плохая оптимизация работы плагина, использование устаревших функций PHP и WordPress. Вред может быть от большого количества одновременно работающих плагинов. Особенно с дублирующим функционалом. Возможен и банальный конфликт плагинов, плагинов с темой. А при грамотном и разумном подходе, плагины принесут вашему сайту исключительно пользу .

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