Подготовка и настройка окружения
Прежде чем начинать писать код, вам необходимо убедиться, что у вас есть подходящая среда разработки. К ней относятся локальная установка WordPress и кодовый редактор. Локальная среда позволяет свободно тестировать и настраивать код, не влияя на работу веб-сайта в реальном времени. Среди популярных программ для локальной разработки — Local by Flywheel, XAMPP и MAMP.
Вам нужно придумать уникальное название для вашего плагина; это название будет использоваться как для названия главной директории плагина, так и для названия его основного файла. Например, если ваш плагин называется “Hello World”, то ваш основной файл плагина может быть назван… hello-world.phpУбедитесь, что название и описание вашего плагина являются уникальными в каталоге плагинов WordPress. Это поможет избежать конфликтов с другими плагинами.
Кроме того, знакомство с официальным руководством по разработке и справочником по коду WordPress крайне важно. Понимание основных концепций WordPress, таких как хаки действий (Action Hooks), хаки фильтров (Filter Hooks), шорткоды (Shortcodes) и API настроек, заложит прочную основу для вашей работы в этой области.
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создание профессиональных PHP-плагинов с нуля.。
Создание первого плагина
Ядро плагина состоит из одного или нескольких PHP-файлов. В простейшем случае плагин может состоять всего из одного PHP-файла. Для создания функционального плагина необходимо добавить в начало основного плагинного файла стандартные комментарии с информацией о плагине. Эти комментарии сообщают системе WordPress всю необходимую метаинформацию о плагине: название, описание, версию, автора и т. д.
Напишите заголовок плагина.
WordPress определяет и отображает информацию о плагинах, считывая комментарии в определенном формате, находящиеся в начале файла плагина. Ниже приведен пример самого базового заголовка файла плагина:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习和演示的简单 WordPress 插件。
* Version: 1.0.0
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Сохраните этот код в новый PHP-файл, например, под названием `my_script.php`. my-first-plugin.phpЗатем поместите этот файл в каталог вашей локальной установки WordPress. wp-content/plugins Плагин находится в указанной папке. Теперь, перейдя на страницу “Плагины” в области управления WordPress, вы увидите в списке новый плагин под названием “Мой первый плагин” и сможете его активировать. На данный момент у этого плагина нет никаких функций.
Добавление базовых функций к плагину
После активации плагина мы добавим к нему простую функцию: автоматическое вставление пользовательского текста в конец содержимого статей. Для этого потребуются фильтры-хаки (filter hooks) WordPress. the_content。
Вы можете добавить следующий код под информацией о главной части плагина:
Рекомендуемое чтение Начиная с нуля: Подробное руководство по всему процессу разработки плагинов для WordPress。
/**
* 在文章内容末尾添加自定义文本
*
* @param string $content 当前文章内容。
* @return string 修改后的文章内容。
*/
function mfp_add_footer_text( $content ) {
// 仅针对主循环中的单个文章页面
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Спасибо, что прочитали эту статью, представленную проектом “Мой первый плагин”.</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将自定义函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' ); Этот код определяет объект с именем… mfp_add_footer_text Функция, которая принимает содержимое статьи… $content В качестве параметра. Внутри функции сначала используются условные теги (conditional tags).is_single(), in_the_loop(), is_main_query()Этот процесс обеспечивает то, что изменения вносятся только в основном цикле страницы конкретной статьи, не влияя на другие страницы, такие как главная страница или архив. Затем создается пользовательский текст на HTML-языке, который добавляется после оригинального содержимого статьи. В итоге… add_filter Функция позволяет “присоединить” эту пользовательскую функцию к системе WordPress. the_content На фильтре.
После сохранения файла обновите страницу статьи на фронтенде, и вы увидите добавленный текст в конце основного текста статьи.
Разработка дополнительных функций: создание меню управления и страниц с параметрами
Плагин с полным набором функций обычно требует взаимодействия с администратором, что обеспечивается добавлением страниц настроек на серверной стороне. WordPress предоставляет обширный набор API для создания меню управления и страниц с параметрами.
Добавить пункт меню для плагинов в бэкенде
Мы создадим отдельную страницу меню для управления плагинами, на которой можно будет настроить некоторые параметры. Для этого потребуется использовать… add_action Крючки и… admin_menu Действие.
В основном файле вашего плагина продолжите добавлять следующий код:
/**
* 在 WordPress 后台管理菜单中添加一个新的顶级菜单项
*/
function mfp_register_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单 slug
'mfp_render_settings_page', // 渲染页面的回调函数
'dashicons-admin-plugins', // 图标(可选)
80 // 菜单位置
);
}
add_action( 'admin_menu', 'mfp_register_admin_menu' ); add_menu_page Функция используется для регистрации нового верхнего уровня меню.manage_options Это идентификатор прав, означающий, что данный меню видят только пользователи, имеющие право на доступ к “управленческим функциям” (обычно это администраторы).mfp_render_settings_page Это название функции, которую мы собираемся определить далее; она будет использоваться для вывода HTML-контента страницы настроек.
Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создайте свой первый пользовательский плагин с нуля。
Содержимое страницы настройок состоит из следующих элементов:
Теперь нам необходимо определить упомянутые выше функции-обратные вызовы (callback functions). mfp_render_settings_page Давайте рендерим простую страницу настройок.
/**
* 渲染插件设置页面的内容
*/
function mfp_render_settings_page() {
?>
<div class="wrap">
<h1></h1>
<form action="/ru/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段、安全 nonce 字段等
settings_fields( 'mfp_settings_group' );
do_settings_sections( 'my-first-plugin' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="ru"/></form>
</div>
<?php
} Эта функция возвращает базовую структуру управленческой страницы в WordPress, включающую заголовок и форму. Для её реализации были использованы две ключевые функции из API настроек WordPress:settings_fields и do_settings_sectionsДля того чтобы всё работало правильно, нам также необходимо зарегистрировать настройки, разделы (секции) и поля (фильтры).
Использование API настроек для регистрации параметров
Настройки API в WordPress предоставляют безопасный и стандартизированный способ обработки процессов регистрации, сохранения и проверки данных, вводимых пользователем в формы. Давайте продолжим и добавим следующий код для регистрации простого текстового поля.
/**
* 初始化插件的设置
*/
function mfp_settings_init() {
// 注册一个新的设置项 `mfp_options` 到数据库
register_setting( 'mfp_settings_group', 'mfp_options' );
// 在页面内添加一个新的节
add_settings_section(
'mfp_section_basic',
'基础设置',
'mfp_section_basic_callback',
'my-first-plugin'
);
// 向节中添加一个字段
add_settings_field(
'mfp_field_custom_text',
'自定义页脚文本',
'mfp_field_custom_text_callback',
'my-first-plugin',
'mfp_section_basic',
array( 'label_for' => 'mfp_field_custom_text' )
);
}
add_action( 'admin_init', 'mfp_settings_init' );
/**
* 节描述的回调函数(可以为空)
*/
function mfp_section_basic_callback() {
echo '<p>Здесь вы можете настроить основные параметры плагина.</p>';
}
/**
* 字段 `mfp_field_custom_text` 的回调函数,用于输出 HTML 输入框
*/
function mfp_field_custom_text_callback() {
// 从数据库获取现有值
$options = get_option( 'mfp_options' );
$value = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
?>
<input type="text"
id="mfp_field_custom_text"
name="mfp_options[custom_text]"
value="<?php echo esc_attr( $value ); ?>"
class="regular-text" />
<p class="description">Этот текст будет отображен в конце статьи.</p>
<?php
} Теперь нам необходимо внести изменения в предыдущий вариант. mfp_add_footer_text Нужно, чтобы функция использовала значения параметров, которые мы только что создали, а не жестко заданный текст.
function mfp_add_footer_text( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$options = get_option( 'mfp_options' );
$custom_text = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
if ( ! empty( $custom_text ) ) {
$content .= '<p><em>'`. esc_html($custom_text).`'</em></p>';
}
}
return $content;
} Теперь ваш плагин обладает полноценной страницей настроек в бэкенде. Администратор может найти эту страницу в меню “Мои плагины”, ввести пользовательский текст для футера и сохранить изменения. Этот текст будет динамически отображаться в конце статей на веб-сайте.
Оптимизация плагинов и практики обеспечения безопасности
При разработке плагинов соблюдение оптимальных практик крайне важно с точки зрения безопасности, производительности и удобства обслуживания. Ниже приведены несколько основных принципов.
Обеспечение безопасности кода
Все данные, полученные с переднего интерфейса или из интерфейса управления, должны быть проверены, очищены и обработаны (включая процедуру эскапации специальных символов) перед тем, как быть отображены в браузере или сохранены в базе данных. Это позволяет предотвратить такие уязвимости безопасности, как кросс-сайтовый скриптинг (XSS) и вставка SQL-запросов.
- Для получения экранируемого (отображаемого на экране) значения используйте такие функции, как…
esc_html(),esc_attr(),esc_url(),wp_kses_post()Для обработки динамического контента необходимо использовать специальные механизмы эскапирования. - Очистите введенные данные с помощью таких функций, как…
sanitize_text_field(),sanitize_email(),intval()Обрабатывается данные, предоставленные пользователем в форме. - Проверка прав доступа: используется в функции обратного вызова администратора.
current_user_can()Необходимо выполнить вторичную проверку прав доступа. При использовании AJAX- или REST-API-сервисов, предназначенных для изменения данных, обязательно используйте токен nonce (цифровой токен) для аутентификации пользователя.
Следуйте стандартам кодирования WordPress.
Использование стандартов кодирования WordPress позволяет соблюдать единый стиль программирования, повышает читаемость кода и облегчает сотрудничество с другими разработчиками. К этому относится правильное использование отступов, стиля закрытия скобок, правила именования элементов кода (функции и переменные называются с использованием маленьких букв и подчеркивания). Для автоматической проверки кода на соответствие стандартам WordPress можно воспользоваться инструментом PHP CodeSniffer в сочетании с соответствующими правилами.
Реализация поддержки международных языков
С самого начала добавление поддержки интернационализации к вашему плагину позволит пользователям по всему миру легко переводить его на свои языки. Это можно осуществить следующими шагами:
1. 在插件头部注释中正确设置 Text Domain и Domain Path。
2. 在所有需要翻译的字符串周围使用 WordPress 的翻译函数,如 (), _e(), esc_html() и т.д.
3. 使用工具如 Poedit 来生成 .pot Шаблонный файл, предназначенный для создания переводов. .po и .mo Переводите документы.
Например, необходимо интернационализировать текст описания страницы настроек:
function mfp_section_basic_callback() {
echo '<p>' . esc_html__( '在这里配置插件的基础选项。', 'my-first-plugin' ) . '</p>';
} резюме
В этой статье мы пошагово показали вам, как создать базовый, но полнофункциональный плагин для WordPress, начиная с нуля. Мы рассмотрели все этапы: подготовку среды разработки, создание файлов плагина, написание информации, содержащейся в его заголовочном файле, использование действий (actions) и фильтров (filters) для добавления контента в статьи, а также создание сложных интерфейсов управления в бэкенде с помощью API WordPress. В заключение мы обсудили важные аспекты разработки плагинов, такие как безопасность, стандарты кодирования и практики интернационализации.
Благодаря этой практике вы уже должны овладеть основными этапами разработки плагинов для WordPress, а также основными инструментами, необходимыми для этой работы. На следующем этапе вы можете попробовать реализовать более сложные функции: создание пользовательских типов статей, настройку пользовательских таблиц базы данных, улучшение интерфейса с помощью jQuery или отправку своего плагина в официальный каталог плагинов WordPress. Помните, что постоянное обучение и изучение исходного кода являются лучшим способом повышения своих навыков разработки.
Часто задаваемые вопросы
Как отладить мой плагин для WordPress?
Первым шагом является включение режима отладки в WordPress. В вашем случае… wp-config.php В документе будет указано, что... WP_DEBUG Константа установлена на trueЭто позволит отображать ошибки, предупреждения и уведомления PHP непосредственно на странице.
Кроме того, можно использовать… error_log() Функция позволяет записывать пользовательские сведения о дебагировании в ошибочный журнал сервера или использовать инструменты разработчика браузера (консоль и вкладка «Сеть») для отладки JavaScript- и AJAX-запросов. Для сложных логических процессов применение профессиональных инструментов дебагирования, таких как Xdebug, значительно ускоряет и упрощает работу.
Мой плагин может вызвать конфликты с темой или другими плагинами?
Возможно, особенно при работе с одинаковыми хуками, использовании общих глобальных переменных или имен классов. Чтобы свести к минимуму конфликты, обязательно добавляйте уникальные префиксы к именам всех ваших функций, классов, переменных и параметров. Например, не используйте одинаковые имена для разных элементов кода. add_footer_textВместо этого используется что-то похожее… myplugin_add_footer_text Название.
Перед изменением глобальных параметров (например, переменных, используемых в запросах) необходимо тщательно их проверить и установить соответствующие ограничения. Перед публикацией плагина стоит как можно больше раз тестировать его в различных средах и с разными комбинациями параметров.
Какие технологии мне нужно изучить для разработки продвинутых плагинов?
Помимо прочных знаний PHP, вам также необходимо глубоко изучить следующее:
– JavaScript: используется для взаимодействия с пользователем на стороне клиента (фронтенде) и для разработки пользовательских настроек в WordPress.
– jQuery: Несмотря на то, что WordPress переходит на современные фреймворки для работы с JavaScript, jQuery по-прежнему находит широкое применение.
REST API: используется для создания разделённых на компоненты приложений для пользовательского интерфейса или для взаимодействия с внешними сервисами.
Знания о базах данных: понимание структуры базы данных WordPress, а также способы безопасного выполнения пользовательских запросов и создания новых таблиц.
Composer: используется для управления пакетами зависимостей PHP.
Инструменты для разработки: такие как Webpack, используемые для управления процессом компиляции современного JavaScript и SASS.
Как опубликовать свой плагин в официальном каталоге WordPress?
Во-первых, убедитесь, что ваш плагин полностью соответствует официальным рекомендациям по разработке плагинов и стандартам безопасности. Вам потребуется учетная запись на сайте WordPress.org. С помощью этой учетной записи вы сможете загрузить сжатый пакет вашего плагина на сервер для проверки. В ходе проверки будет проверяться качество кода, уровень безопасности, лицензия (она должна быть совместима с лицензией GPL) и другие аспекты.
Если ваш плагин пройдет проверку, он будет добавлен в SVN-репозиторий, и вы сможете использовать SVN для его обновления и управления. После публикации пользователи смогут найти, установить и обновить ваш плагин прямо из своего WordPress-панели управления.
Что дальше, что дальше?
Расширенное чтение и практические знания
Следующие статьи связаны с темой этой статьи и подходят для дальнейшего углубленного чтения. Зачастую лучше начать с той статьи, которая наиболее близка к вашей текущей проблеме, а затем постепенно переходить к другим темам.
- Как выбрать и настроить идеальную тему для WordPress, подходящую именно вам?
- Руководство по разработке плагинов для WordPress: Создайте свой первый пользовательский плагин с нуля
- Как стать разработчиком плагинов для WordPress: полное руководство от нуля
- Полное руководство по созданию веб-сайтов: профессиональный подход к разработке от нуля
- От нуля до один: Полное руководство и практические советы по созданию профессиональных сайтов с использованием WordPress