WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Интеграция MailChimp в WordPress без использования плагина

171

Когда дело доходит до WordPress, вы получите почти все виды плагинов, которые работают в соответствии с вашими ожиданиями. Использование плагинов на сайте WordPress, конечно, не проблема, пока вы не перегрузите свой сайт кучей плагинов. Если у вас есть большое количество плагинов на вашем сайте WordPress, то это определенно повлияет на ваш сервер, сайт, вызовет конфликты между плагинами. Это также может замедлить работу вашего сайта.

В Artisans Web я всегда рекомендую пользователям как можно больше использовать минимум плагинов. Если вы можете добиться своих целей, написав собственный код, тогда дерзайте. Это всегда хорошая практика, а не использование плагина. Написав свой собственный код, вы станете лучшим разработчиком WordPress. В конце концов, это ключ к тому, чтобы стать экспертом в разработке WordPress.

В этой статье мы изучаем, как выполнить интеграцию MailChimp в WordPress без использования каких-либо плагинов. Мы собираемся создать нашу собственную форму информационного бюллетеня, отправить форму через WordPress Ajax, подписать пользователя на ваш список аудитории MailChimp.

Получите ключ API MailChimp и идентификатор аудитории

Чтобы начать интеграцию MailChimp в WordPress, вам сначала нужно получить ключ API MailChimp и идентификатор аудитории. Получите эти сведения, выполнив следующие действия.

Войдите в свою учетную запись MailChimp. Из значка пользователя выберите Учетную запись.

Интеграция MailChimp в WordPress без использования плагина

На следующей странице нажмите Extra-> API keys.

Интеграция MailChimp в WordPress без использования плагина

В разделе «Ваши ключи API» нажмите «Создать ключ» и скопируйте свой ключ API, который нам понадобится в ближайшее время.

Интеграция MailChimp в WordPress без использования плагина

Теперь у вас есть ключ API. Затем получите идентификатор аудитории, к которому нужно добавить подписчиков. Для этого щелкните меню «Аудитория», а затем выберите параметр «Настройки» в раскрывающемся списке «Управление аудиторией».

Интеграция MailChimp в WordPress без использования плагина

В разделе “Настройки” нажмите на название аудитории и значения по умолчанию.

Интеграция MailChimp в WordPress без использования плагина

На следующей странице вы найдете свой идентификатор аудитории.

Интеграция MailChimp в WordPress без использования плагина

Создайте шорткод WordPress

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

Откройте файл активной темы functions.phpи добавьте в него код ниже.

add_shortcode('mailchimp', 'mailchimp_form');
function mailchimp_form() {
    ob_start();
    ?>
    <form class="form-inline">
        <div class="form-group mb-2">
            <label for="email" class="sr-only"><?php _e('Email'); ?></label>
            <input type="email" class="form-control-plaintext" id="email">
        </div>
        <button type="button" class="btn btn-primary mb-2 subscribe"><?php _e('Subscribe'); ?></button>
    </form>
    <?php
    return ob_get_clean();
}

После добавления вышеуказанного кода вы теперь можете использовать шорткод [mailchimp]. Поместите его где хотите, и вы должны увидеть форму подписки. Конечно, вам может потребоваться добавить собственный стиль в форму в соответствии с дизайном вашего веб-сайта.

В нашу форму мы добавили идентификатор «электронная почта» в поле электронной почты и класс «подписаться» на кнопку отправки. Этот идентификатор и класс будут использоваться, когда мы отправим форму через Ajax.

Добавить файл JavaScript в WordPress

Поскольку мы собираемся использовать WordPress Ajax, нам нужно написать код JavaScript. Итак, нам нужно включить JS-файл в среду WordPress. WordPress предоставляет стандартный способ включения JS-файла, которому мы должны следовать. Создайте js/awscript.jsфайл в каталоге своей темы. В наш JS-файл мы передадим нашу собственную переменную security, которая действует как одноразовый номер.

Код ниже также находится внутри functions.phpфайла.

add_action( 'wp_enqueue_scripts', 'twentynineteen_scripts' );
function twentynineteen_scripts() {
    // Register the script
    wp_register_script( 'awscript', get_stylesheet_directory_uri(). '/js/awscript.js', array('jquery') );
 
    // Localize the script with new data
    $script_array = array(
        'ajaxurl' => admin_url('admin-ajax.php'),
        'security' => wp_create_nonce("subscribe_user"),
    );
    wp_localize_script( 'awscript', 'aw', $script_array );
 
    // Enqueued script with localized data.
    wp_enqueue_script( 'awscript' );
}

Теперь перейдите к js/awscript.jsи напишите код, который принимает введенную пользователем электронную почту, передает ее Ajax и показывает ответ пользователю.

jQuery(function($){
    $('body').on('click', '.subscribe', function(e) {
        e.preventDefault();
        email = $('#email').val();
        if(isEmail(email)) {
            var data = {
                'action': 'subscribe_user',
                'email': email,
                'security': aw.security
            };
 
            $.post(aw.ajaxurl, data, function(response) {
                if (response == 200) {
                    alert('You have subscribed successfully.');
                } else {
                    alert(response);
                }
            });
        } else {
            alert('This is not a valid email');
        }
    });
});
 
function isEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}

В приведенном выше коде, помимо обработки ответа Ajax, я также добавил функцию, isEmail()которая будет проверять, является ли переданное электронное письмо действительным или нет.

Добавить подписчика в аудиторию MailChimp

На этом мы закончили с формой информационного бюллетеня и вызовом Ajax. Теперь напишите код, который фактически отправляет электронное письмо в API MailChimp и добавляет подписчика к идентификатору аудитории MailChimp.

Здесь, поскольку нам нужно выполнить вызов API, мы будем использовать метод wp_remote_post для отправки запросов и обработки ответов.

Вы должны добавить в functions.phpфайл приведенный ниже код .

add_action('wp_ajax_subscribe_user', 'subscribe_user_to_mailchimp');
add_action('wp_ajax_nopriv_subscribe_user', 'subscribe_user_to_mailchimp');
 
function subscribe_user_to_mailchimp() {
    check_ajax_referer('subscribe_user', 'security');
    $email = $_POST['email'];
    $audience_id = 'YOUR_AUDIENCE_ID';
    $api_key = 'YOUR_API_KEY';
    $data_center = substr($api_key,strpos($api_key,'-')+1);
    $url = 'https://'. $data_center .'.api.mailchimp.com/3.0/lists/'. $audience_id .'/members';
    $auth = base64_encode( 'user:'. $api_key );
    $arr_data = json_encode(array(
        'email_address' => $email,
        'status' => 'subscribed' //pass 'subscribed' or 'pending'
    ));
 
    $response = wp_remote_post( $url, array(
            'method' => 'POST',
            'headers' => array(
                'Content-Type' => 'application/json',
                'Authorization' => "Basic $auth"
            ),
            'body' => $arr_data,
        )
    );
 
    if (is_wp_error( $response)) {
       $error_message = $response->get_error_message();
       echo "Something went wrong: $error_message";
    } else {
        $status_code = wp_remote_retrieve_response_code( $response );
        switch ($status_code) {
            case '200':
                echo $status_code;
                break;
            case '400':
                $api_response = json_decode( wp_remote_retrieve_body( $response ), true );
                echo $api_response['title'];
                break;
            default:
                echo 'Something went wrong. Please try again.';
                break;
        }
    }
    wp_die();
}

При добавлении приведенного выше кода не забудьте заменить заполнители YOUR_AUDIENCE_ID и YOUR_API_KEY на фактические значения. Приведенный выше код вызывает API MailChimp и напрямую добавляет электронное письмо в список аудитории. Если вы собираетесь отправить пользователю электронное письмо с подтверждением перед добавлением его электронной почты в список, установите значение статуса как «ожидающий».

Mailchimp также предоставляет поля Аудитории. Используя эти поля, вы можете хранить дополнительную информацию о пользователях прямо в панели управления MailChimp. На всякий случай, если вы хотите добавить поля аудитории, вы можете сделать это, добавив еще один элемент массива в указанный выше запрос POST. Здесь я добавляю значения для полей аудитории по умолчанию FNAME и LNAME.

<?php
...
...
$arr_data = json_encode(array(
    'email_address' => $email,
    'status' => 'subscribed', //pass 'subscribed' or 'pending'
    'merge_fields'  => array(
        'FNAME' => 'ENTER_FIRST_NAME',
        'LNAME' => 'ENTER_LAST_NAME'
    )
));

Все дело в интеграции MailChimp в WordPress без плагинов. Я рекомендую этот способ, так как он дает вам свободу стилизации вашей формы, а также помогает вам немного узнать о кодировании WordPress. Пожалуйста, поделитесь своими мыслями или предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее