Периодически может вставать задача получать какие то данные с других сайтов (Как например, курс валют). В целом, проблема может быть решена простым php скриптом, но, гораздо правильнее и эффективнее получать данные, кэшировать их и выводить полноценной структурой.

Этот мануал создан для того, чтобы научить вас пользоваться шорткодом «RCT Parse», типом записей «Parse» (Парсеры) и парсингу контента.

Для примера, мы попробуем спарсить курс валют USD и EUR с сайта ЦБ РФ, по данному url: https://www.cbr-xml-daily.ru/daily_utf8.xml

Прежде всего — давайте познакомимся с типом записей «Parse» (Парсеры).

Найти этот тип записей, как обычно, можно на боковой панели WordPress.

Как обычно у нас есть возможность сразу добавить парсер, или посмотреть на те парсеры, что уже созданы. Давайте добавим новый парсер.

Разберем настройки этой записи.

Название: я предлагаю руководствоваться форматом «адрес сайта без https — страница — подстраница», в нашем случае, название будет выглядеть как «cbr.ru daily».

URL: очевидно, что он будет выглядеть как «https://www.cbr-xml-daily.ru/daily_utf8.xml»

Время жизни кэша: надо понимать, что курс валют обновляется каждый день. Соответственно, задавать что-то другое в данном пункте, отличное от значения по умолчанию, не имеет смысла. Минимальное значение: 1, что соответствует 1 секунде. Меньше ставить нельзя.

Удалять в полночь: очень важный пункт для нашей задачи. Поскольку курс валют обновляется каждый день, задать время жизни ему так, чтобы он был новый каждое утро — невозможно. Но данный пункт позволяет проверять, наступил ли новый день, и если да — то удалять старый кэш. Тем самым, ставим этот параметр в значение «Да».

Вывод: поскольку мы очень хотим посмотреть результат сразу — оставим этот параметр в значении «Выводим».

Тип: устанавливаем в XML, потому что на входе именно такие данные мы и имеем.

CSS селектор: не трогаем.

Удалять теги: не трогаем.

Теперь, нам необходимо создать страницу и на ней шорткод «RCT Parse», в котором необходимо указать ID той записи, которую мы только что создали.

Посмотрим, что у нас получилось:

Как можно заметить, у нас полностью загрузился XML, добавились теги, правда выглядит всё это не в самом лучшем виде. Нам же нужно получить USD и EUR, а для этого, правильным будет, создание ещё двух парсеров, которые будут брать информацию из нашего текущего парсера и выводить её.

Однако, прежде всего, необходимо в нашем текущем парсере, в параметре «Вывод» установить значение «Не выводить». Это нужно для того, чтобы парсер только сохранял результат парсинга в кэш, но не выводил его (Т.к. зачем нам нужна вся эта куча xml-тегов в фронтенде).

Создаем парсер для EUR.

Используем следующие значения:

Название: «cbr.ru daily eur» которое ёмко передаёт суть данного парсера.

URL: указываем ID нашего первого парсинга. Тем самым, парсинг будет идти из кэша первого парсера.

Время жизни кэша: аналогично, как и в первом парсере — оставляем по умолчанию.

Удалять в полночь: аналогично, как и в первом парсере — оставляем значение «Да».

Вывод: указываем «Выводить», т.к. нам нужно получить уже конкретный результат на выходе.

Тип: устанавливаем в HTML, потому что после первых преобразований XML, в наличии уже имеем HTML.

CSS селектор: указываем «.rct_parse_content_html_row-id_R01239 .rct_parse_content_html_row-value». Почему? Потому что «rct_parse_content_html_row-id_R01239» -класс тега с данными по EUR, а «rct_parse_content_html_row-value» — тег содержащий непосредственно цифры.

Удалить теги: устанавливаем значение «удаляем», чтобы не выводились никакие теги, оставшиеся после конвертирования XML в HTML.

На той же странице, где мы разместили первый шорткод «RCT_Parse», размещаем ещё один шорткод, в котором выбираем второй парсинг.

Поскольку второй парсинг использует данные из первого то крайне важно чтобы первый парсинг на странице был выше чем второй.

Проверяем.

Всё работает!