Вопрос или проблема
То, что я сделал до сих пор, это создал плагин, который создает пользовательский тип записи, берет поле (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, вы сможете автоматизировать процесс обмена данными между системами. Удачи в разработке вашего плагина!