Создание выгрузки YML для сайта на WordPress

882
Время чтения: 9 мин
Сохранить статью:

Увеличьте продажи на вашем сайте WordPress

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

Работа с фидом для передачи товаров, услуг и предложений

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

PHP скрипт для создания выгрузки YML

Для создания выгрузки в YML необходимо создать PHP скрипт. Пример PHP скрипта представлен ниже:

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');

// Заголовки для указания, что это XML файл
header('Content-Type: application/xml; charset=utf-8');

// Начало XML
if(false):
echo '<?xml version="1.0" encoding="UTF-8"?>';
endif;

$date = date("Y-m-d")."T".date("H:i");
echo '<yml_catalog date="'.$date.'">';
echo '<shop>';

// Основная информация о клинике
echo '<name>Название</name>';
echo '<company>' . htmlspecialchars('ООО «Название организации»', ENT_XML1, 'UTF-8') . '</company>';
echo '<url>https://example.ru/</url>';
echo '<picture>https://example.ru/wp-content/themes/child-theme/assets/img/logo.png</picture>';
echo '<description>Каталог врачей и медицинских услуг</description>';
echo '<currencies><currency id="RUR" rate="1"/></currencies>';
echo '<categories><category id="1">Врачи</category></categories>';
echo '<sets>';

$taxonomy = 'doctors-cat';

// Получаем все термины таксономии
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => true,
));

if (!empty($terms) && !is_wp_error($terms)) {
foreach ($terms as $term) {
// Выводим каждый терм как сет
echo '<set id="' . $term->term_id . '">';
echo '<name>' . htmlspecialchars($term->name, ENT_XML1, 'UTF-8') . '</name>';
echo '</set>';
 }
}

echo '</sets>';

// Предложения (врачи)
echo '<offers>';
$args = array(
'post_type' => 'doctors',
'posts_per_page' => -1,
);

$query = new WP_Query($args);

if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$categories = wp_get_post_terms(get_the_ID(), 'doctors-cat');

echo '<offer id="' . get_the_ID() . '">';
echo '<name>' . strip_tags(htmlspecialchars(get_the_title(), ENT_XML1, 'UTF-8')) . '</name>';
echo '<url>' . get_the_permalink() . '</url>';
echo '<price>0</price>';
echo '<currencyId>RUR</currencyId>';
echo '<set-ids>';
foreach ($categories as $key => $category):
if($key):
echo ',';
endif;
echo $category->term_id;
endforeach;
echo '</set-ids>';
echo '<categoryId>1</categoryId>';
if( trim(get_field('pt_doctors_experience')) != '' ):
$experience = preg_replace('/[^0-9]/', '', get_field('pt_doctors_experience'));
else:
$experience = 0;
endif;
echo '<param name="Годы опыта">'. $experience .'</param>';
echo '<param name="Город">г. Москва</param>';
echo '<param name="Название клиники">Название организации</param>';
echo '<param name="Адрес клиники">Москва, м. Кунцево ул. Перовская, д. 77</param>';
echo '</offer>';
}
}
// Сброс глобальной переменной и запроса
wp_reset_postdata();

echo '</offers>';
echo '</shop>';
echo '</yml_catalog>';
?>

Настройка .htaccess

Для корректной работы скрипта необходимо добавить следующие строки в файл .htaccess

RewriteCond %{REQUEST_FILENAME} /doctors.yml
RewriteCond %{DOCUMENT_ROOT}/wp-content/themes/child-theme/inc/doctors-feed.php -f
RewriteRule ^(.*)$ wp-content/themes/child-theme/inc/doctors-feed.php [L]

Подробное описание настроек .htaccess

RewriteCond %{REQUEST_FILENAME} /doctors.yml: Это условие проверяет, является ли запрашиваемый файл/путь на сервере /doctors.yml. Если это так, то правила перенаправления, указанные далее в коде, будут выполняться.

RewriteCond %{DOCUMENT_ROOT}/wp-content/themes/child-theme/inc/doctors-feed.php -f: Это условие проверяет, существует ли файл/путь на сервере wp-content/themes/child-theme/inc/doctors-feed.php. Если файл существует, то правила перенаправления будут продолжаться.

RewriteRule ^(.*)$ wp-content/themes/child-theme/inc/doctors-feed.php [L]: Это правило перенаправляет все запросы в папку wp-content/themes/child-theme/inc/doctors-feed.php. Флаг [L] указывает на то, что это последнее правило, которое должно быть выполнено для данного запроса.

Таким образом, эти строки кода позволяют серверу перенаправить все запросы к файлу /doctors.yml или существующему файлу wp-content/themes/child-theme/inc/doctors-feed.php на указанный путь и файл.

Создание выгрузки YML для сайта на WordPress — это важный шаг для интеграции вашего сайта с популярными маркетплейсами и агрегаторами. С помощью этого PHP скрипта и настроек .htaccess вы можете создать выгрузку YML, которая позволит вам увеличить продажи и расширить аудиторию вашего интернет-магазина.

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