Создание плагина для импорта CSV в WordPress

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

Шаг 1: Создание структуры плагина

Для начала создайте папку для вашего плагина в директории wp-content/plugins. Назовите папку, например, csv-importer. Внутри этой папки создайте файл csv-importer.php, который будет содержать основной код плагина.

Шаг 2: Основной код плагина

Вставьте следующий код в файл csv-importer.php:

<?php
/**
 * Plugin Name: CSV Importer
 * Description: Плагин для импорта данных из CSV-файлов в таблицу pay.
 * Version: 1.0
 * Author: Ваше Имя
 */

// Функция для создания таблицы
function pay_create_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'pay_sber';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        account_number varchar(100) NOT NULL,
        address varchar(255) NOT NULL,
        premises varchar(50) NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'pay_create_table');

// Добавление страницы в админку
function csv_importer_menu() {
    add_menu_page('Импорт CSV', 'Импорт CSV', 'manage_options', 'csv-importer', 'csv_importer_page');
}
add_action('admin_menu', 'csv_importer_menu');

// Страница плагина
function csv_importer_page() {
    ?>
    <div class="wrap">
        <h1>Импорт CSV</h1>
        <form method="post" enctype="multipart/form-data">
            <input type="file" name="csv_file" accept=".csv" required>
            <input type="submit" name="import_csv" value="Импортировать">
        </form>
    </div>
    <?php

    if (isset($_POST['import_csv'])) {
        if (!empty($_FILES['csv_file']['tmp_name'])) {
            $result = import_csv_to_table($_FILES['csv_file']['tmp_name']);
            if ($result) {
                echo '<div class="updated"><p>Импорт завершен!</p></div>';
            } else {
                echo '<div class="error"><p>Ошибка при импорте данных!</p></div>';
            }
        }
    }
}

// Функция для импорта CSV в таблицу
function import_csv_to_table($csv_file_path) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'pay_sber';

    if (($handle = fopen($csv_file_path, "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            // Проверка на наличие данных
            if (count($data) < 3) {
                continue; // Пропустить строки с недостаточным количеством данных
            }

            $wpdb->insert(
                $table_name,
                array(
                    'account_number' => sanitize_text_field($data[0]),
                    'address' => sanitize_text_field($data[1]),
                    'premises' => sanitize_text_field($data[2])
                ),
                array(
                    '%s',
                    '%s',
                    '%s'
                )
            );
        }
        fclose($handle);
        return true; // Успешный импорт
    } else {
        return false; // Ошибка при открытии файла
    }
}

Объяснение кода

Заголовок плагина:
В начале файла мы определяем метаданные плагина, такие как название, описание, версия и автор.

Создание таблицы:
Функция pay_create_table создает таблицу pay в базе данных, если она еще не существует. Мы используем функцию dbDelta, которая позволяет обновлять структуру таблицы.

Добавление меню в админку:
Функция csv_importer_menu добавляет новый пункт меню в админку WordPress, который ведет на страницу импорта CSV.

Страница импорта:
Функция csv_importer_page создает форму для загрузки CSV-файла. После отправки формы вызывается функция import_csv_to_table, которая обрабатывает файл.
Импорт данных:
Функция import_csv_to_table открывает загруженный CSV-файл, считывает данные и вставляет их в таблицу pay.
Мы используем sanitize_text_field для очистки данных перед вставкой в базу данных.

Шаг 3: Установка и активация плагина

Сохраните файл csv-importer.php в папке csv-importer.

Перейдите в админку WordPress, в раздел “Плагины” и активируйте плагин “CSV Importer”.
В меню админки появится пункт “Импорт CSV”, где вы сможете загрузить файл и импортировать данные.

Заключение

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

0 Комментариев

No Comment.

Прокрутить вверх