Добавить адрес электронной почты пользователя в файл JS в виде строки JSON

Я пытаюсь интегрировать интерком-мессенджер в свою многосайтовую сеть Wordpress с помощью специального плагина. Я не могу использовать официальный плагин, потому что хочу, чтобы он загружал скрипт только для пользователей Admin/Editor, а также загружал его на страницах администратора. (Это так, чтобы администраторы сайта могли получить доступ к нашей команде поддержки, которая помогает сети.)

У меня правильно работает мессенджер, но у меня проблемы с его отправкой пользовательских данных на интерком, чтобы я мог знать, кто отправляет сообщения нашей команде. Вот что говорит внутренняя документация относительно такой информации:

То, что нужно запомнить:

  • Имена клавиш чувствительны к регистру и не могут содержать точки ('.'), Знаки доллара ('$'), символы типа ~`!@#%^&*'{}|\'" Или символ NULL.
  • Значения данных должны быть отправлены в виде строк JSON, чисел или логических значений (true или false).
  • Мы не можем принять объект, вложенные хэши и форматы данных массива. Текстовые строковые значения могут содержать до 255 символов.
  • Вы можете очистить существующие значения данных, отправив пустые строки.

Поэтому я думаю, что мне нужно получить адрес электронной почты пользователя, используя строку JSON в моем сценарии. У меня есть сценарий, разделенный на его собственный файл.js, и я вызываю его из файла.php, который содержит мои условные выражения. Вот эти файлы:

/*
Intercom Multisite Activation
Intercom Role Limiter
*/

// Get User ID
add_filter( 'intercom_settings', function( $settings ) {                                                  
  $settings['user_id'] = $user_id;                
  return $settings;                                                      
} );

// Generate Hash Keys for Users
hash_hmac(
  'sha256', // hash function
  $user->email, // user's email address
  'thiscontainsmysecretkey' // secret key (keep safe!)
);

// Load Intermon on Front End for Administrator or Editor Roles
add_action('wp_enqueue_scripts', 'dgtl_intercom_enqueue');
function dgtl_intercom_enqueue() {
    if ( current_user_can('editor') || current_user_can('administrator') ) {
        wp_enqueue_script(
            'dgtl-intercom',
            plugin_dir_url(__FILE__).'/js/dgtl-intercom.js'
        );
    }
}

// Load Intermon in admin for Administrator or Editor Roles
add_action('admin_enqueue_scripts', 'dgtl_intercom_admin_enqueue');
function dgtl_intercom_admin_enqueue() {
    if ( current_user_can('editor') || current_user_can('administrator') ) {
        wp_enqueue_script(
            'dgtl-intercom',
            plugin_dir_url(__FILE__).'/js/dgtl-intercom.js'
        );
    }
}

И вот мой файл JS:

var APP_ID = "xxxxxxxx",
CLIENT_EMAIL = "email";

window.intercomSettings = {
    app_id: "APP_ID",
    email: "CLIENT_EMAIL", // Email address
    user_hash: "INSERT_HMAC_VALUE_HERE" // HMAC using SHA-256
};

(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/xxxxxxxx';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})()

Я думаю, что моя проблема в том, что я не знаю, как правильно назвать имя пользователя в строку JSON. Спасибо вам за помощь!

0 ответов

Другие вопросы по тегам