Плагин WordPress – несколько файлов php

Вопрос или проблема

Мне нужна помощь с моим первым плагином WP. У меня есть приложение на php/mysql, разбитое на 10 php файлов (в основном это формы), и у меня есть проблема с ассоциацией между formscript.php и скриптом сервиса (service.php). Мне определенно нужен результат от service.php в интерфейсе WP (плагина).

Упрощенные скрипты:

myfirst.php
<?php /* 
Имя плагина: myfirst
...*/
function myfirst_admin() {
    include('formcript.php');}

function myfirst_admin_actions() {
    add_options_page("myfirst", "myfirst", 1, "myfirst", "myfirst_admin");
} 
add_action('admin_menu', 'myfirst_admin_actions');?>

formscript.php:
echo '<form method="post" action="service.php">
<input type="text" name="something" />
<input type="submit" value="отправить" />
</form>';

service.php:
<?php echo $_POST["neco"];?>

Есть какие-либо предложения?

В большинстве случаев не следует непосредственно обращаться к файлам вашего плагина PHP. Сам по себе файл — это просто файл, он не имеет способа узнать, что является частью установки WordPress. Даже намеренно загружать ядро WP из произвольного файла очень сложно сделать универсально и надежно.

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

Для простой отправки формы вам, вероятно, следует начать с изучения wp-admin/admin-post.php конечной точки и попытаться ее использовать.

Ответ или решение

Создание плагина на WordPress с использованием нескольких PHP файлов

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

Основы структуры плагина

Сначала создадим файл вашего плагина myfirst.php. Самый первый шаг — это объявление плагина, что мы уже сделали в вашем примере. Ваша функция myfirst_admin() будет отвечать за отображение административного интерфейса плагина:

<?php
/*
Plugin Name: My First Plugin
Description: Пример плагина для WordPress.
Version: 1.0
Author: Ваше Имя
*/

function myfirst_admin() {
    // Подключаем свой файл формы
    include(plugin_dir_path(__FILE__) . 'formscript.php');
}

function myfirst_admin_actions() {
    add_options_page("My First Plugin", "My First Plugin", 'manage_options', "myfirst", "myfirst_admin");
} 

add_action('admin_menu', 'myfirst_admin_actions');
?>

Создание формы

Теперь создадим файл formscript.php, в котором будет ваша форма. Вместо того, чтобы отправлять данные формы на service.php, мы будем использовать специальный процесс обработки WordPress:

<?php
echo '<form method="post" action="' . esc_url(admin_url('admin-post.php')) . '">
    <input type="text" name="something" required />
    <input type="hidden" name="action" value="my_first_plugin_action" />
    <input type="submit" value="Отправить" />
</form>';
?>

Обратите внимание на использование функции esc_url() для безопасного формирования URL. Здесь также добавлен скрытый элемент input, который задает действие, которое мы будем обрабатывать позже.

Обработка данных формы

Теперь необходимо добавить логику для обработки отправленных данных. Это можно сделать, используя хук admin_post_<action>. Для этого добавьте следующий код в ваш файл плагина myfirst.php:

function handle_my_first_plugin_action() {
    if (!empty($_POST['something'])) {
        // Здесь можете обработать данные из формы, например, сохранить в базу данных или обработать по-другому
        $something = sanitize_text_field($_POST['something']);

        // Выводим результат, либо перенаправляем пользователя
        echo 'Вы отправили: ' . esc_html($something);
        exit;
    }
}

add_action('admin_post_my_first_plugin_action', 'handle_my_first_plugin_action');

Эта функция будет вызываться при отправке формы. Мы используем sanitize_text_field() для очистки данных перед их использованием.

Итоги

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

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

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

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

Капча загружается...