Яндекс Толока — это популярная платформа для краудсорсинга, где можно создавать задания для сбора данных, тестирования и модерации. Если вы ведёте сайт на WordPress и хотите интегрировать задания Толоки для автоматического отображения на сайте, то это вполне решаемая задача. В этой статье подробно расскажу, как настроить автоматический импорт заданий из Яндекс Толока в WordPress с использованием API Толоки и примерами кода.
Что такое Яндекс Толока и зачем нужен импорт заданий в WordPress
Яндекс Толока позволяет создавать разнообразные задания, которые пользователи выполняют за вознаграждение. На сайтах с контентом, образовательных порталах или маркетплейсах полезно показывать актуальные задания напрямую, чтобы привлечь исполнителей или демонстрировать статистику.
Автоматический импорт заданий экономит время, исключает ручной ввод и обеспечивает актуальность данных. Вместо постоянного копирования ссылок и описаний достаточно настроить интеграцию — и новые задания будут появляться автоматически на вашем сайте.
Подготовка: что потребуется для интеграции с API Яндекс Толоки
Для работы с API Яндекс Толоки необходимо:
- Зарегистрироваться в Толоке и получить API-ключ (OAuth-токен).
- Иметь базовые знания PHP и работы с REST API в WordPress.
- Подготовить кастомный тип записей (Custom Post Type) для заданий Толоки или использовать стандартные записи.
Если хотите упростить процесс, можно использовать плагины для работы с REST API и кастомными типами записей, например, Clearfy Pro, который упрощает создание Custom Post Type и управление API.
Создание кастомного типа записей для заданий Толоки
Для начала создадим тип записей toloka_task, чтобы хранить задания. В файле functions.php вашей темы или в собственном плагине добавьте следующий код:
function wpstart_register_toloka_task_cpt() {
$labels = array(
'name' => 'Задания Толока',
'singular_name' => 'Задание',
'add_new' => 'Добавить задание',
'add_new_item' => 'Добавить новое задание',
'edit_item' => 'Редактировать задание',
'new_item' => 'Новое задание',
'view_item' => 'Просмотр задания',
'search_items' => 'Поиск заданий',
'not_found' => 'Задания не найдены',
'menu_name' => 'Задания Толока'
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'custom-fields'),
'show_in_rest' => true,
);
register_post_type('toloka_task', $args);
}
add_action('init', 'wpstart_register_toloka_task_cpt');Этот код создаст удобный интерфейс в админке для заданий Толоки и позволит работать с ними через REST API.
Получение данных о заданиях из API Яндекс Толоки
API Толоки предоставляет метод get_projects и get_tasks для получения списка проектов и заданий. Для импорта нам нужны задания.
Пример запроса на PHP с использованием cURL для получения списка заданий:
function wpstart_toloka_get_tasks($token, $project_id, $limit = 10) {
$url = 'https://toloka.yandex.ru/api/v1/tasks?project_id=' . $project_id . '&limit=' . $limit;
$headers = array(
'Authorization: OAuth ' . $token,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}В этом примере $token — ваш OAuth-токен, $project_id — ID проекта Толоки, из которого нужно импортировать задания.
Автоматическое добавление заданий в WordPress
После получения массива заданий нужно добавить их в базу WordPress как записи типа toloka_task. Пример функции для импорта:
function wpstart_toloka_import_tasks($tasks) {
foreach ($tasks as $task) {
// Проверяем, есть ли уже запись с таким ID в мета
$existing = new WP_Query(array(
'post_type' => 'toloka_task',
'meta_key' => 'toloka_task_id',
'meta_value' => $task['id'],
'posts_per_page' => 1
));
if ($existing->have_posts()) {
continue; // Уже импортировано
}
// Создаем запись
$post_id = wp_insert_post(array(
'post_title' => sanitize_text_field($task['pool_id']),
'post_content' => wp_kses_post(json_encode($task['input_values'])),
'post_status' => 'publish',
'post_type' => 'toloka_task'
));
if ($post_id) {
update_post_meta($post_id, 'toloka_task_id', sanitize_text_field($task['id']));
update_post_meta($post_id, 'toloka_task_pool', sanitize_text_field($task['pool_id']));
}
}
}Здесь мы сохраняем в мета поле ID задания и другие данные для удобного поиска и фильтрации.
Настройка регулярного запуска импорта через WP-Cron
Чтобы импорт выполнялся автоматически, создадим задачу WP-Cron, которая будет запускать импорт по расписанию.
function wpstart_toloka_schedule_import() {
if (!wp_next_scheduled('wpstart_toloka_import_event')) {
wp_schedule_event(time(), 'hourly', 'wpstart_toloka_import_event');
}
}
add_action('wp', 'wpstart_toloka_schedule_import');
function wpstart_toloka_import_event_callback() {
$token = 'ваш_токен';
$project_id = 'ваш_project_id';
$tasks = wpstart_toloka_get_tasks($token, $project_id, 20);
if (!empty($tasks)) {
wpstart_toloka_import_tasks($tasks);
}
}
add_action('wpstart_toloka_import_event', 'wpstart_toloka_import_event_callback');Теперь WordPress будет запускать импорт заданий каждый час.
Плагины для упрощения интеграции и автоматизации
Если вы не хотите писать весь код с нуля, можно использовать плагины для работы с REST API и кастомными типами записей. Например:
- Clearfy Pro — для создания Custom Post Type и оптимизации.
- Плагины для интеграции с внешними API через WP-Cron и визуальные конструкторы запросов.
Использование таких инструментов ускорит разработку и позволит гибко настраивать импорт.
Как отобразить импортированные задания на сайте
Для вывода заданий создайте шаблон архива или используйте шорткод. Пример простого шорткода для вывода последних 5 заданий:
function wpstart_toloka_tasks_shortcode($atts) {
$atts = shortcode_atts(array('count' => 5), $atts);
$query = new WP_Query(array(
'post_type' => 'toloka_task',
'posts_per_page' => intval($atts['count'])
));
$output = '<ul>';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
wp_reset_postdata();
$output .= '</ul>';
return $output;
}
add_shortcode('toloka_tasks', 'wpstart_toloka_tasks_shortcode');Вставляйте в записи или на страницы шорткод [toloka_tasks count="10"] для показа списка заданий.
Резюме
Автоматический импорт заданий из Яндекс Толоки в WordPress — задача вполне выполнимая при помощи API Толоки и стандартных инструментов WordPress. Создайте кастомный тип записей, настройте получение данных через API, добавьте импорт в WP-Cron и выводите задания через шорткод.
Такой подход позволит поддерживать ваш сайт актуальным и автоматизировать работу с заданиями без лишних затрат времени.