Анализ необходимых функций и методов

3-минутное чтение
2026-03-12
2026-06-04
1,965
Я получаю комиссионные, когда вы совершаете покупки по ссылкам ниже, без дополнительных затрат для вас.

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

Основные действия и функции-хакеры фильтров (Core actions and filter hook functions)

Архитектура плагинов WordPress основана на системе “хуков” (hooks), которая позволяет разработчикам вставлять пользовательские функции в определенные моменты выполнения основного кода. Понимание и правильное использование этих хуков является первым шагом в разработке плагинов.

Подключение пользовательских функций к основному процессу работы WordPress

Функции плагинов должны активироваться в подходящий момент, и это обычно осуществляется с помощью механизма “действий” (actions) в WordPress.add_action Функции служат своего рода мостом, соединяющим плагины с основным циклом жизни приложения; они позволяют разработчикам выполнять пользовательский код при наступлении определенных событий. remove_action Используется для удаления действий, которые уже были выполнены (то есть для отмены их выполнения).

Рекомендуемое чтение Руководство по разработке плагинов для WordPress: Создайте свой первый плагин с нуля

Основная синтаксис выглядит следующим образом:

Ультахост (UltaHost) – хостинг-провайдер, предоставляющий услуги хостинга для сайтов, построенных на платформе WordPress.
Гарантия возврата средств в течение 30 дней, неограниченная пропускная способность интернет-канала и объем баз данных, бесплатная защита от DDoS-атак. При покупке на срок 3 лет предоставляется скидка в размере 501 ТБ до 4 ТБ.
add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 )

Например, после публикации содержимого статьи можно отправить уведомительное письмо:

function send_post_notification( $post_id ) {
    // 发送邮件的逻辑
}
add_action( 'publish_post', 'send_post_notification' );

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

Изменение данных, передаваемых другим функциям, или изменение их вывода

Помимо выполнения кода в определенные моменты времени, разработчикам часто приходится изменять данные, генерируемые другими функциями. В таких случаях используются фильтрующие хуки (filter hooks).add_filter Функция предназначена для добавления обратного вызова (callback) фильтра; она принимает входные данные, модифицирует их и затем должна возвращать результаты обработки.

Например, изменение последнего символа в заголовках всех статей:

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

function modify_post_title( $title ) {
    return $title . ' - 我的网站';
}
add_filter( 'the_title', 'modify_post_title' );

и add_action Аналогично…add_filter Также поддерживаются настройки приоритета и количества параметров. Фильтры являются основой для высокой степени настроиваемости в WordPress.

Функции для работы с базами данных и управления параметрами

Плагины часто требуют постоянного хранения данных. WordPress предоставляет иерархический API для управления данными — от простых настроек сайта до операций с пользовательскими таблицами базы данных.

Безопасное хранение и получение настроек плагинов

Для плагинов, которые требуют сохранения настроек пользователей, параметры конфигурации необходимо хранить в базе данных WordPress.add_optionget_option и update_option Это составляет основу управления данными. Эти функции работают с… wp_options Таблицы подходят для хранения относительно простых данных в формате ключ-значение.

hosting.com Общий хостинг
Высокая производительность благодаря процессорам AMD EPYC, SSD-накопителям NVMe и LiteSpeed, круглосуточная экспертная поддержка, передовые меры безопасности, включая SSL, защиту от грубой силы, вредоносных программ и DDoS, экономия до 73%

Во-первых, можно воспользоваться… add_option Давайте добавим начальное значение… wp_options Эта функция вставляет данные только в том случае, если соответствующий параметр отсутствует.

add_option( 'my_plugin_api_key', '', '', 'no' ); // ‘no’表示非自动加载

Для получения значения опции используется… get_optionРекомендуется всегда предоставлять значения по умолчанию.

$api_key = get_option( 'my_plugin_api_key', '' ); // 第二个参数为默认值

Для обновления значений параметров используйте следующий метод: update_optionЕсли выбранного варианта не существует, система автоматически создаст его.

Рекомендуемое чтение Полное руководство по разработке плагинов для WordPress: создание профессиональных расширений с нуля

update_option( 'my_plugin_api_key', 'new_secret_key_123' );

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

Выполнение пользовательских запросов к базе данных

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

Общий хостинг InterServer
Общий хостинг $2.50 USD в месяц, первый месяц $0.1 USD промо-код tryinterserver, 461 скрипт облачных приложений, установка в один клик.

Во-первых, создайте таблицу в хендлере активации плагина. Убедитесь, что используется правильный способ её создания. dbDelta Функция позволяет безопасно создавать или обновлять структуру таблицы. Она сравнивает существующую структуру таблицы с желаемой (целевой) и интеллектуально применяет необходимые изменения.

global $wpdb;
$table_name = $wpdb->prefix . 'my_plugin_orders';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
    id bigint(20) NOT NULL AUTO_INCREMENT,
    customer_email varchar(100) NOT NULL,
    amount decimal(10,2) NOT NULL,
    order_date datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
    PRIMARY KEY (id),
    KEY customer_email (customer_email)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );

При выполнении запросов к данным необходимо использовать… $wpdb->prepare Подготовка строк с использованием определенных методов является ключевым мероприятием для предотвращения атак типа SQL-инъекций:

$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}my_plugin_orders WHERE order_date > %s AND amount > %f",
        '2026-01-01 00:00:00',
        100.00
    )
);

Функция генерации и вывода контента

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

Вставка динамического контента в статьи и страницы

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

add_shortcode Функция принимает два параметра: краткое кодовое обозначение и функцию обработки. Функция обработки должна возвращать HTML-контент, а не выводить его непосредственно на экран; это соответствует принципу WordPress, согласно которому сначала происходит сбор данных (“скраптинг”), а затем их отображение («рендеринг»).

add_shortcode( 'recent_posts', 'my_plugin_render_recent_posts' );
function my_plugin_render_recent_posts( $atts ) {
    // 解析属性,设置默认值
    $attributes = shortcode_atts( array(
        'count' => 5,
        'category' => ''
    ), $atts );

// 根据属性查询文章逻辑...
    $output = '<ul class="recent-posts">';
    // ... 生成列表项
    $output .= '</ul>';
    return $output;
}

Пользователю достаточно лишь ввести нужный текст в редакторе. [recent_posts count="3"] Тогда будет отображаться список последних статей.

Безопасно отобразить значение переменной в HTML

Когда плагин должен отображать значения переменных на странице (например, текст, полученный из базы данных, или настройки), достаточно использовать их непосредственно. echo Слияние строк может сопровождаться риском внедрения кросс-сайтового скриптинга (XSS-атак). WordPress предоставляет специальные функции для эскапирования символов, чтобы обеспечить безопасность выводимого контента.

Для вывода информации внутри атрибутов HTML-тегов используется следующий подход: esc_attr Функция:

echo '<input type="text" value="' . esc_attr( get_option( 'site_title' ) ) . '">';

Для вывода контента внутри HTML-тегов используется следующий подход: esc_html

echo '<h1>'`. esc_html($post_title)`.'</h1>';

Для HTML-контента, безопасность которого уже была подтверждена (например, после проверки…) wp_kses_post (Фильтрация производится), однако необходимо выводить полный URL-адрес. Для этого можно использовать… esc_url

echo '<a href="/ru/' . esc_url( $external_link ) . '/">ссылка</a>';

Чтобы вывести переменные PHP в блоке кода JavaScript, необходимо использовать . wp_json_encode И в сочетании с… esc_js

<script>
var pluginSettings = <?php echo wp_json_encode( $settings_array ); ?>;
var message = '<?php echo esc_js( $user_message ); ?>';
</script>

Функции обработки файлов и медиафайлов

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

Получение абсолютного пути к ресурсам, находящимся внутри плагина или темы

В процессе разработки плагинов часто возникает необходимость использовать CSS-, JavaScript-файлы или изображения, расположенные внутри собственного каталога плагина. Однако использование жестко заданных абсолютных путей к этим файлам крайне небезопасно, поскольку сайт может быть перенесен на другое место. WordPress предоставляет способы, позволяющие безопасно обращаться к таким файлам независимо от изменений их расположения на сайте. plugin_dir_path и plugins_url Функция используется для динамического генерирования путей.

plugin_dir_path Путь к файловой системе сервера, в которой находится каталог плагинов; в конце пути должна стоять косая черта. Подходит для использования в… includerequire Файл:

$config_path = plugin_dir_path( __FILE__ ) . 'config/config.php';
if ( file_exists( $config_path ) ) {
    require_once $config_path;
}

а plugins_url Используется для создания URL-адресов, доступных в браузере; подходит для использования в…

Анализ необходимых функций и методов – LikaCloud

Ресурсы, цитируемые в тексте:

$css_url = plugins_url( 'assets/css/admin-style.css', __FILE__ );
wp_enqueue_style( 'my-admin-style', $css_url );

Для разработчиков тем соответствующие функции предназначены для выполнения конкретных задач, связанных с созданием и управлением темами. get_template_directory_uri и get_stylesheet_directory_uri

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

Если плагин позволяет пользователям загружать файлы, ни в коем случае нельзя использовать эти файлы непосредственно. $_FILES Глобальные массивы… move_uploaded_file Функции. Функции обработки медиафайлов в WordPress wp_handle_upload Предоставляется полная интеграция функций проверки безопасности и управления файлами.

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

$uploadedfile = $_FILES['my_plugin_upload'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );

if ( $movefile && ! isset( $movefile['error'] ) ) {
    // 文件上传成功
    $file_url = $movefile['url'];
    $file_path = $movefile['file'];
    // 可以将 $file_url 存入数据库
} else {
    // 上传失败,输出错误信息
    echo $movefile['error'];
}

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

резюме

Овладение основными функциями и методами WordPress является основой для эффективного и безопасного разработки плагинов и тем. Начнем с системы хуков (hooks)…add_action, add_filterРеализация модульной архитектуры для работы с базами данных$wpdb, get_optionОбеспечение долговечности хранения данных, а затем вывод контента.add_shortcode, esc_htmlОбеспечение безопасности и надлежащая обработка данныхwp_handle_uploadКаждая группа функций предлагает отработанные решения для конкретных сценариев использования. Разработчикам необходимо тщательно изучить параметры этих функций, их возвращаемые значения, а также наилучшие практики их применения, чтобы избежать избыточной работы (например, повторения уже существующих решений) и возможных уязвимостей в безопасности. Только так они смогут создать надежные и мощные расширения для WordPress.

Часто задаваемые вопросы

В чем заключается основное отличие между функциями `add_action` и `add_filter`?

Основное отличие между ними заключается в назначении и ожидаемом поведении функций обратного вызова (callback functions).add_action Используется для выполнения определенной операции при наступлении определенного события; функция-обратный вызов (callback) обычно не возвращает значения, а просто выполняет определенную логику (например, отправляет электронное письмо или ведет запись в журнал). add_filter Функции, предназначенные для “изменения определенных данных”, должны принимать одно входное значение в своем обратном вызове (callback) и возвращать измененное значение. С технической точки зрения они идентичны, но различие в семантике делает код более понятным и читаемым.

Почему при использовании класса $wpdb необходимо обязательно использовать метод prepare?

$wpdb->prepare Методы защиты являются ключевым звеном в противодействии атакам типа SQL-инъекции. Они позволяют принимать значения переменных с использованием заменителей (%s – для строк, %d – для целых чисел, %f – для чисел с плавающей точкой) и обеспечивают их правильную обработку (эскапирование символов и форматирование) перед вставкой в SQL-запросы. Даже если вы уверены в безопасности источника этих переменных (например, они поступают из надежных источников данных), использование таких методов все равно является обязательным для предотвращения возможных угроз. get_option(Номер телефона), используйте prepare Это также хорошая привычка, которой следует придерживаться, поскольку она обеспечивает стабильность кода в условиях будущих изменений или сложных ситуаций.

Могут ли функции `esc_html` и `esc_attr` использоваться взаимозаменяемо?

Хотя в некоторых простых случаях замена одной функции на другую не приведет к немедленным ошибкам, это категорически не рекомендуется. Эти две функции оптимизированы для работы в разных HTML-средах.esc_html Используется для эскапирования содержимого, находящегося внутри HTML-тегов; это позволяет предотвратить непредвиденное поведение браузера при обработке такого содержимого. <>&"' Знаки, такие как ``, `&`, ``, ``, ``, `&`, ``, ``, ``, должны быть преобразованы в соответствующие HTML-ентитеты. esc_attr Этот инструмент предназначен специально для эскапирования значений, содержащихся в атрибутах HTML-тегов. Он учитывает возможность того, что значения атрибутов могут быть заключены в кавычки. Использование правильной функции гарантирует безопасное эскапирование во всех возможных ситуациях.

Что означает константа FILE в строке plugin_dir_path(FILE)?

FILE Это PHP-магическая константа, которая представляет собой полный путь к текущему исполняемому скрипту в файловой системе вместе с его именем. Ее следует использовать в главном файле плагина. plugin_dir_path(FILE)Можно динамически и точно получить абсолютный путь к каталогу плагина, независимо от того, где он установлен. Это намного надежнее, чем использование жестко заданных путей, и обеспечивает портативность плагина в различных серверных средах. Аналогичные константы часто применяются при разработке тем (тематических настроек сайта). DIR или функция get_template_directory() Играют ту же самую роль.