Добавить адрес электронной почты пользователя в файл 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. Спасибо вам за помощь!