Вопрос или проблема
Нам нужно для нашего клиента, который использует HR портал для описаний вакансий, отобразить все предложения о работе на веб-сайте WordPress с помощью ACF. Пример фида выглядит следующим образом.
“https://mitarbeiter.pi-ag.com/bewerber-web/public/JobPortalData?companyEid=DNU01&tenant=&lang=D&jobPortal=f162fa4f-1eeb-47f2-96a4-d78fe47323ca”
Задача заключается в том, как интегрировать динамические данные в пользовательские поля. Спасибо за подсказку. Мы также хотели бы передать эту работу фрилансеру.
Ответ или решение
Для автоматического импорта XML-файла с URL в макет ACF (Advanced Custom Fields) на WordPress, требуется выполнять несколько шагов. Давайте разберем этот процесс подробно, чтобы обеспечить полное понимание и эффективное применение данных.
1. Изучение источника данных
Прежде всего, необходимо ознакомиться с форматом XML, который поставляется по указанной ссылке:
https://mitarbeiter.pi-ag.com/bewerber-web/public/JobPortalData?companyEid=DNU01&tenant=&lang=D&jobPortal=f162fa4f-1eeb-47f2-96a4-d78fe47323ca
Для этого можно использовать инструменты, такие как Postman или простой браузер. Мы должны удостовериться, что можем получить нужную структуру данных.
2. Обработка XML данных
Следующим шагом будет создание PHP-скрипта, который будет обрабатывать XML-данные. Это можно сделать с помощью функции simplexml_load_file()
, которая позволяет загрузить XML содержимое в простой объект.
Пример кода:
$url = 'https://mitarbeiter.pi-ag.com/bewerber-web/public/JobPortalData?companyEid=DNU01&tenant=&lang=D&jobPortal=f162fa4f-1eeb-47f2-96a4-d78fe47323ca';
$xml = simplexml_load_file($url);
// Проверяем наличие ошибок при загрузке
if ($xml === false) {
die('Ошибка загрузки XML');
}
3. Импорт данных в ACF
Для импорта данных в ACF, необходимо знакомиться с функциями, предоставляемыми плагином ACF. Например, update_field()
или add_row()
, если мы работаем с повторяющимися полями.
Создадим функцию, которая будет преобразовывать байты XML в поля ACF.
foreach ($xml->jobOffers->jobOffer as $jobOffer) {
$post_data = array(
'post_title' => (string) $jobOffer->title,
'post_content' => (string) $jobOffer->description,
'post_status' => 'publish',
'post_type' => 'job_listing', // Убедитесь, что этот тип записи соответствует вашему определению
);
// Создание записи
$post_id = wp_insert_post($post_data);
// Проверка успешного создания записи
if ($post_id) {
// Пример обновления пользовательских полей
update_field('field_company', (string) $jobOffer->company, $post_id);
update_field('field_location', (string) $jobOffer->location, $post_id);
// Добавьте больше полей по мере необходимости
}
}
4. Автоматизация процесса импорта
Чтобы этот процесс выполнялся регулярно (например, раз в день), можно использовать WP Cron. Добавим событие, которое будет вызывать импорт данных.
if (!wp_next_scheduled('import_job_offers_event')) {
wp_schedule_event(time(), 'daily', 'import_job_offers_event');
}
add_action('import_job_offers_event', 'import_job_offers_function');
function import_job_offers_function() {
// Вставьте здесь код, который мы рассмотрели выше
}
5. Советы для фрилансера
Если вы планируете передать эту задачу фрилансеру, рекомендую:
- Сообщить о необходимых навыках: PHP, WordPress API, ACF, работа с XML.
- Пересмотреть код, чтобы убедиться, что он безопасен и оптимизирован.
- Запросить создание документации по коду для будущих изменений и поддержки.
Заключение
Подводя итог, мы рассмотрели пошаговый процесс автоматического импорта данных с XML в ACF. Включая обработку XML, создание пользовательских полей и автоматизацию с помощью крон-задач, исполнение этих шагов обеспечит быструю и эффективную интеграцию данных в ваш HR-портал на WordPress.