Как сделать автоматический импорт заданий из Яндекс Толока в WordPress

Яндекс Толока — это популярная платформа для краудсорсинга, где можно создавать задания для сбора данных, тестирования и модерации. Если вы ведёте сайт на 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 и выводите задания через шорткод.

Такой подход позволит поддерживать ваш сайт актуальным и автоматизировать работу с заданиями без лишних затрат времени.

Автоматическое удаление старых постов в WordPress по дате публикации
18.01.2026
Как отладить проблемы с AJAX в WordPress
17.11.2025
Как изменить HTML-разметку в WordPress без ущерба для SEO
27.12.2025
Как сделать автоматический импорт заданий из Яндекс Толока в WordPress
04.02.2026
Как создать собственный тип записей (Custom Post Type) в WordPress
15.01.2026