据我所知,上述插件旨在向站点的页眉、正文或页脚添加css或js,而不是PHP。
我建议您创建一个自定义插件,以便在站点上集成自定义脚本。这样,您就不需要依赖其他插件,并且可以完全控制脚本添加到站点的方式和时间。
您可以从中了解有关创建自定义插件的更多信息WP Dev docs, Plugin Basics.
在自定义插件中,您可以根据用户和角色有条件地添加脚本。下面是一个简单的例子。根据需要取消注释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() {
?>
<!-- script here -->
<?php
}
当然,您可以省去PHP if语句,始终打印脚本,只打印脚本中间的角色。但我不认为这是一种干净的做事方式。
add_action( \'wp_head\', \'my_print_chatbot_script_with_role\' );
function my_print_chatbot_script_with_role() {
$user = wp_get_current_user();
?>
<script>
// script...
title: "TestBot",
initPayload: <?php echo (array) $user->roles[0]; ?>,
customData: { language: "en" },
// script...
</script>
<?php
}
第三种选择是将脚本放入单独的js文件中
enqueue 它使用PHP。然后
inline 要在主脚本文件中使用的角色数据。
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\'
);
}