Как создать автоматический импорт визиток в WordPress с помощью REST API

В современном бизнесе часто возникает задача автоматически импортировать данные визиток клиентов или партнеров в систему управления сайтом на WordPress. Особенно это актуально для сайтов, которые работают с контактами или CRM-системами. В этой статье мы разберем, как создать автоматический импорт визиток в WordPress с помощью REST API и кастомного кода.

Что такое импорт визиток и зачем использовать REST API в WordPress

Импорт визиток — это процесс автоматического добавления контактных данных в базу сайта, чтобы не вводить их вручную. Визитка обычно содержит имя, должность, телефон, email и другие данные. REST API WordPress позволяет создавать, читать, обновлять и удалять записи (посты, пользовательские типы записей и мета-данные) программно через HTTP-запросы.

Использование REST API для импорта позволяет интегрировать сайт с внешними приложениями, например, с мобильными сканерами визиток или CRM, и быстро загружать данные в WordPress.

Для реализации нам понадобится создать пользовательский тип записи, например, wptips_business_card, и написать обработчик, который будет принимать JSON с данными визитки, валидировать и сохранять их.

Создание пользовательского типа записи для визиток в WordPress

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

add_action('init', 'wptips_register_business_card_cpt');
function wptips_register_business_card_cpt() {
    $labels = array(
        'name' => 'Визитки',
        'singular_name' => 'Визитка',
        'add_new' => 'Добавить визитку',
        'add_new_item' => 'Добавить новую визитку',
        'edit_item' => 'Редактировать визитку',
        'new_item' => 'Новая визитка',
        'view_item' => 'Просмотреть визитку',
        'search_items' => 'Поиск визиток',
        'not_found' => 'Визиток не найдено',
        'not_found_in_trash' => 'Визиток нет в корзине',
    );

    $args = array(
        'labels' => $labels,
        'public' => false,
        'show_ui' => true,
        'show_in_rest' => true,
        'rest_base' => 'business_cards',
        'supports' => array('title'),
        'capability_type' => 'post',
        'has_archive' => false,
    );

    register_post_type('wptips_business_card', $args);
}

Этот код регистрирует тип записи, который не отображается на фронтенде, но доступен в админке и через REST API с базой /wp-json/wp/v2/business_cards.

Расширение REST API для приема данных визитки

Добавим в REST API маршрут для импорта визиток с дополнительной обработкой полей, например, телефона, email и компании. Для этого зарегистрируем новый маршрутизатор и обработчик.

add_action('rest_api_init', 'wptips_register_import_business_card_endpoint');
function wptips_register_import_business_card_endpoint() {
    register_rest_route('wptips/v1', '/import-business-card', array(
        'methods' => 'POST',
        'callback' => 'wptips_import_business_card_handler',
        'permission_callback' => '__return_true', // Внимание: для боевого сайта сделайте проверку авторизации
    ));
}

function wptips_import_business_card_handler(WP_REST_Request $request) {
    $data = $request->get_json_params();

    if (empty($data['name']) || empty($data['phone'])) {
        return new WP_REST_Response(array('error' => 'Поля name и phone обязательны'), 400);
    }

    // Создаем запись визитки
    $post_id = wp_insert_post(array(
        'post_type' => 'wptips_business_card',
        'post_title' => sanitize_text_field($data['name']),
        'post_status' => 'publish',
    ));

    if (is_wp_error($post_id)) {
        return new WP_REST_Response(array('error' => 'Ошибка создания записи'), 500);
    }

    // Сохраняем мета-данные
    if (!empty($data['phone'])) {
        update_post_meta($post_id, 'wptips_phone', sanitize_text_field($data['phone']));
    }
    if (!empty($data['email'])) {
        update_post_meta($post_id, 'wptips_email', sanitize_email($data['email']));
    }
    if (!empty($data['company'])) {
        update_post_meta($post_id, 'wptips_company', sanitize_text_field($data['company']));
    }

    return new WP_REST_Response(array('success' => true, 'id' => $post_id), 201);
}

Теперь можно отправлять POST-запросы с JSON, например:

{
  "name": "Иван Иванов",
  "phone": "+7 123 456 78 90",
  "email": "ivan@example.com",
  "company": "ООО Ромашка"
}
<

На адрес https://ваш-сайт/wp-json/wptips/v1/import-business-card. Запись визитки будет создана автоматически.

Пример интеграции с плагином WPRemark для отображения визиток

Для удобного отображения визиток на сайте можно использовать плагин WPRemark, который позволяет создавать красивые отзывы и карточки. Мы можем адаптировать шаблон для вывода визиток, используя мета-поля, которые сохранили.

Пример простого шорткода для вывода визиток:

add_shortcode('wptips_business_cards_list', function() {
    $args = array(
        'post_type' => 'wptips_business_card',
        'posts_per_page' => 10,
    );
    $query = new WP_Query($args);
    if (!$query->have_posts()) {
        return '<p>Визиток не найдено.</p>';
    }
    $output = '<div class="wptips-business-cards">';
    while ($query->have_posts()) {
        $query->the_post();
        $phone = get_post_meta(get_the_ID(), 'wptips_phone', true);
        $email = get_post_meta(get_the_ID(), 'wptips_email', true);
        $company = get_post_meta(get_the_ID(), 'wptips_company', true);

        $output .= '<div class="wptips-card">';
        $output .= '<h3>' . get_the_title() . '</h3>';
        if ($company) $output .= '<p>Компания: ' . esc_html($company) . '</p>';
        if ($phone) $output .= '<p>Телефон: ' . esc_html($phone) . '</p>';
        if ($email) $output .= '<p>Email: <a href="mailto:' . esc_attr($email) . '">' . esc_html($email) . '</a></p>';
        $output .= '</div>';
    }
    wp_reset_postdata();
    $output .= '</div>';
    return $output;
});

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

Безопасность и практические советы

Обратите особое внимание на безопасность REST API. В примере выше для упрощения мы отключили проверку разрешений (permission_callback возвращает true), но в реальных проектах необходимо проверять авторизацию и доступ, чтобы избежать несанкционированного импорта. Можно реализовать ключ API или проверку nonce.

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

Для удобства импорта из CSV или других форматов можно написать специальный скрипт, который преобразует данные в JSON и отправляет запросы на API.

Заключение

Таким образом, мы создали простой, но мощный механизм автоматического импорта визиток в WordPress с помощью REST API и пользовательского типа записи. Это решение гибко и расширяемо, позволяет интегрировать сайт с разными источниками данных и значительно экономит время на ввод контактов вручную.

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

Если хотите попробовать готовые решения для улучшения работы с контентом и автоматизацией, рекомендую ознакомиться с плагинами на WPSHOP.RU.

Как удалить старые ревизии постов в WordPress без плагинов
23.01.2026
Как удалить все комментарии в WordPress за один день
04.11.2025
Как изменить URL адреса страниц в WordPress
10.11.2025
Как создать автоматический импорт продуктов в WooCommerce из CSV файла
23.02.2026
Как установить ограничения на количество просмотров страницы в WordPress
29.12.2025