我知道这个问题以前已经回答过了,但这并不是我想要的信息。
现在我正在为一个客户开发一个聊天机器人。我对web开发有点陌生,但特别是wordpress (这是客户端正在使用的)。
聊天机器人使用wordpress的Insert Headers and Footers
插件添加到页面中。我把它加到头上。但我想它也会在身体里起作用。
考虑到我不了解PHP/Wordpress,我不知道如何将用户角色传递给bot,因此它只对某些用户角色提供支持。
我知道有一些php函数(is_user_loggedin或wp_get_current_user),但我不知道如何实际运行这些函数。
我试着在像下面这样的脚本标记之间添加它们,至少尝试将信息转储到浏览器控制台,但是它没有工作。
<?php
$user = wp_get_current_user();
var_dump($user);
?>
这就是我如何添加聊天机器人到网站:我添加以下的应用程序的Header
使用前面提到的插件。
!(function () {
let e = document.createElement("script"),
t = document.head || document.getElementsByTagName("head")[0];
(e.src =
"https://cdn.jsdelivr.net/npm/rasa-webchat@1.x.x/lib/index.js"),
// Replace 1.x.x with the version that you want
(e.async = !0),
(e.onload = () => {
window.WebChat.default(
{
params: { storage:"session"},
title: "TestBot",
initPayload: 'hello',
customData: { language: "en" },
socketUrl: "https://testlink.com",
inputTextFieldHint: "Ask question here",
// add other props here
},
null
);
}),
t.insertBefore(e, t.firstChild);
})();
我试图将用户角色传递给initPayload
属性。但是,在这里,我真的很难理解如何实际运行和存储php代码的结果。
我真的很感激你的帮助!
发布于 2022-03-01 09:42:21
据我了解,上述插件的目的是将css或js添加到站点的页眉、正文或页脚,而不是PHP。
我建议创建一个自定义插件,用于在站点上集成您的自定义脚本。这样,您就不依赖于其他插件,并且您可以完全控制脚本添加到站点的方式和时间。
您可以了解有关从WP Dev,插件基础创建自定义插件的更多信息。
在您的自定义插件中,您可以根据用户和角色有条件地添加脚本。下面是简单的例子。取消注释if语句,或根据需要添加更多语句。
add_action( 'wp_head', 'my_maybe_add_chatbot' );
function my_maybe_add_chatbot() {
// only logged in users?
// if ( ! is_user_logged_in() ) {
// return;
// }
// Only certain role
// $user = wp_get_current_user();
// $allowed_role = 'some_role';
// if ( ! in_array( $allowed_role, (array) $user->roles ) ) {
// return;
// }
// other guards..
my_print_chatbot_script();
}
function my_print_chatbot_script() {
?>
当然,您可以省略PHP语句,始终打印脚本,只需在脚本中间打印角色。但我不认为这是一种干净的做事方式。
add_action( 'wp_head', 'my_print_chatbot_script_with_role' );
function my_print_chatbot_script_with_role() {
$user = wp_get_current_user();
?>
// script...
title: "TestBot",
initPayload: <?php echo (array) $user->roles[0]; ?>,
customData: { language: "en" },
// script...
第三种选择是将脚本放入单独的js文件中,并使用
排队
进行。然后,
内联
要在主脚本文件中使用的角色数据。
add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts' );
function my_enqueue_scripts() {
$user = wp_get_current_user();
wp_enqueue_script(
'my-script',
plugin_dir_url( __FILE__ ) . '/js/script.js',
array(),
'1.0.0',
true
);
// access in js console.log( MY_SCRIPT_USER_ROLES );
wp_add_inline_script(
'my-script',
'const MY_SCRIPT_USER_ROLES = ' . json_encode( (array) $user->roles ),
'before'
);
}
https://wordpress.stackexchange.com/questions/403253
复制相似问题