Файлы excel довольно часто используются импорта и экспорта некоторого набора данных. По этой причине иногда может возникать необходимость импорта данных из файла с расширением xlsx в WordPress. Сразу стоит сказать, что по умолчанию импортировать данные в формате xlsx WordPress не умеет. По этой причине есть необходимость поиска какого-либо решения для импорта данных. Вероятно, существует какие-либо плагины, выполняющие роль импорта данных из excel-файла в записи. Однако мы пойдём иным путём, и реализуем импорт данных программно. Особенность такого метода в том, что мы может осуществлять различную логику импорта, что делает данные метод более гибким. Давайте приступим к примеру.
Для того чтобы работать с файлами excel рекомендуется воспользоваться готовой библиотекой PHPExcel. На нашем сайте было несколько постов, где рассматриваются вопросы использования библиотеки, ссылки на них будут в конце поста. Саму библиотеку PHPExcel вы можете скачать с репозитория на GitHub.
Основной файл библиотеки, который мы будем подключать находится в папке Classes и называется PHPExcel.php. Далее поговорим про использование библиотеки в коде.
Для удобства создадим отдельную директорию на сервере, с названием tools. В этой папке мы распаковываем архив библиотеки PHPExcel, а также создаём сам скрипт для импорта данных, назовём его read.php. В итоге мы получаем такое содержимое:
Далее рассмотрим структуру нашего файла excel. Для простоты примера у нас будет несколько колонок в таблице, выглядеть наш файл для импорта будет таким образом:
Первая колонка – название записи, вторая – текст описания, в формате html, третья колонка – метка записи. Файл импорта будет иметь название import.xlsx и добавить его так же нужно в папку tools. Теперь рассмотрим непосредственно сам код импорта данных из файла.
Открываем файл read.php и приступаем непосредственно к коду:
<?php // подключаем ядро WordPress require_once( '../wp-load.php'); // подключаем библиотеку PHPExcel require_once './PHPExcel-1.8/Classes/PHPExcel.php'; // загружаем файл импорта $excel = PHPExcel_IOFactory::load('./import.xlsx'); // получаем содержимое файла XLSX Foreach($excel ->getWorksheetIterator() as $worksheet) { $lists = $worksheet->toArray(); } // перебераем строки, записываем в базу foreach ($lists as $arField){ // массив для новой записи $post_data = array( 'post_title' => $arField[0], // название записи 'post_content' => $arField[1], // текст записи 'post_status' => 'publish', // статус публикации записи 'post_author' => 1, // ID автора поста 'post_category' => array(759), // ID рубрик для записи 'tags_input' => $arField[2] // метка записи ); // добавление записи $post_id = wp_insert_post($post_data, true); if ($post_id > 0){ echo 'Пост '. $arField[0] .' добавлен успешно, id поста: '.$post_id; // при использовании произвольных полей, можно так же задавать значения // update_post_meta($post_id , 'person_name', 'какое-либо значение'); } else { echo 'Ошибка добавления записи: ' . $arField[0]; } } ?>
Рассмотрим комментарии в коде вы можете наглядно понять, как происходит процесс импорта. В начале подключается ядро самого WordPress, нужно оно ровно для того, чтобы мы могли пользоваться встроенными функциями ядра движка сайта. Далее подключается библиотека PHPExcel. С помощью библиотеки мы загружаем и считываем данные из файла xlsx. В качестве результата мы получаем массив с полями из файла. Далее в цикле мы перебираем массив, и создаём записи посредством встроенное функции wp_insert_post. Используя документацию по WordPress выполнять манипуляции с данными, мы можем так, как требуется для каждого конкретного случая.
Собственно, менять логику импорта вы можете так как вам потребуется. Так же на нашем сайте были посты касательно вопросов использования PHPExcel, вероятно они могут оказаться вам полезными:
PHPExcel — OpenXML — чтение, запись и создание документов Excel в PHP
PHPExcel: форматирование ячеек
Ошибки PHPExcel при переносе на боевой сервер
На этом у меня всё, всего доброго!
А как запустить импорт?