Как импортировать пользовательскую таблицу MySQL в пользовательский тип записи WordPress

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

То, что я сделал до сих пор, это создал плагин, который создает пользовательский тип записи, берет поле (ID из пользовательской БД) и также создает несколько шаблонов страниц.

У меня есть пользовательская MySQL БД, которая находится на том же сервере, что и установка WP. Мне нужно импортировать таблицу MySQL в пользовательский тип записи WP.

Я не могу понять, как импортировать данные непосредственно из одной MySQL БД в WP с помощью PHP. Загвоздка в том, что мне нужно, чтобы это происходило каждый раз, когда обновляется пользовательская MySQL БД.

Если это поможет, у нас есть REST API, который мы можем использовать. Я просто пытался сделать это как можно менее трудоемким.

Любая помощь будет оценена!!

Записи WordPress не хранятся в одной таблице. Метаданные записей хранятся в другом месте, и, конечно, каждая таблица имеет свой собственный формат. Если вы когда-либо публиковали контент непосредственно в WordPress (записи, страницы, вложения и т. д.), вы можете быстро столкнуться с проблемами с ID записей. Даже если нет, это потенциально потребует довольно значительной манипуляции с данными для преобразования ваших не-WP данных в структуру, подходящую для WP.

В этом случае, я бы сказал, что REST API будет гораздо лучшим решением, и это также будет более совместимо с будущими версиями.

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

Я бы предложил создать PHP-скрипт (который будет находиться внутри папки плагинов в WordPress – например /wp-content/plugins/my-importer/import/import.php), который будет подключаться к родному фреймворку WordPress, но не загружать тему (это позволяет использовать wp_insert_post(), wp_update_post(), update_post_meta() и т. д.; без загрузки ненужного вывода).

Настройте скрипт так, чтобы он взаимодействовал с REST API, запрашивая любые обновления; собирал необходимую информацию; затем использовал родные функции WordPress для добавления и обновления информации по мере необходимости.

Вы потенциально можете использовать wget через cron для регулярного запуска импорта.

Я знаю, что это довольно общее; но это может указать вам правильное направление.

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

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

Шаг 1: Создание плагина

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

Шаг 2: Подключение к пользовательской базе данных

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

global $wpdb;

// Вам необходимо изменить параметры подключения к вашей пользовательской базе данных
$custom_db = new wpdb('username', 'password', 'custom_database', 'localhost'); // Замените свой логин, пароль и имя базы данных

Шаг 3: Импорт данных из таблицы

Предположим, что у вас есть таблица в пользовательской базе данных с именем my_custom_table, и вы хотите импортировать все данные из этой таблицы. Вы можете использовать следующий код:

$records = $custom_db->get_results("SELECT * FROM my_custom_table");

foreach($records as $record) {
    // Подготовка данных для создания записи в WP
    $post_data = array(
        'post_title'    => $record->title, // Замените на название поля из вашей БД
        'post_content'  => $record->content, // Замените на содержание
        'post_status'   => 'publish',
        'post_type'     => 'your_custom_post_type', // Укажите ваш пользовательский тип записи
    );

    // Вставка или обновление записи
    $post_id = wp_insert_post($post_data);

    // Добавление метаданных, если необходимо
    if ($post_id && !is_wp_error($post_id)) {
        update_post_meta($post_id, 'custom_meta_key', $record->meta_value); // Замените на ваши метаполя
    }
}

Шаг 4: Обновление данных при изменении в БД

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

Шаг 5: Настройка регулярного импорта

Если ваши данные обновляются регулярно, вы можете использовать планировщик задач WordPress (WP-Cron) для периодического импорта данных. Для этого добавьте следующую функцию в ваш плагин:

if (!wp_next_scheduled('my_custom_import_event')) {
    wp_schedule_event(time(), 'hourly', 'my_custom_import_event');
}

add_action('my_custom_import_event', 'my_custom_import_function');

function my_custom_import_function() {
    // Ваш код импорта из предыдущего шага
}

Шаг 6: Использование wget для триггера импорта

Как упоминалось ранее, вы можете использовать wget через cron, чтобы периодически вызывать вашу функцию импорта. Например, добавьте в cron следующую команду:

* * * * * wget -q -O - http://yourwebsite.com/wp-json/your-endpoint

Заключение

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

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

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