我只是在用户没有登录的情况下尝试在wordpress中执行javascript文件,但我不明白为什么它不起作用。这是我正在使用的代码:
<?php
if ( is_user_logged_in() ) {
echo 'Ok!';
} else {
wp_enqueue_script(
'ads'
);
}
?>
这就是我在functions.php中注册文件的原因:
wp_register_script(
'ads',
get_bloginfo('template_directory') . '/js/ads.js'
);
有什么想法吗?提前谢谢!
答案 0 :(得分:1)
wp_enqueue_script()
应该在wp_enqueue_scripts
挂钩上运行。这也应该封装在一个函数中,或至少closure/anonymous function。
旁注,您现在想要开始正确格式化/缩进代码 - future you 谢谢!
A。您正在检查用户是否&#34;&#34;登录。您可以使用&#34; Not&#34;确保is_user_logged_in()
返回false。逻辑运算符:!
。
B。您不需要注册脚本,因为wp_enqueue_script
会为您注册。如果您只是在页面上有活动短代码的情况下加载脚本,那么您真的只需要注册脚本。
C。通常,您希望为脚本/样式句柄添加前缀,因为它们should be unique,否则可能会发生冲突。
D。通常,自get_template_directory_uri()
以来,您希望get_stylesheet_directory_uri()
或get_bloginfo( $directory_type )
is literally just a wrapper for those functions使用get_bloginfo()
。
这样的事情会让你开始:
add_action( 'wp_enqueue_scripts', 'load_ads_script' );
function load_ads_script(){
if( !is_user_logged_in() ){
// The "!" makes sure the user is _not_ logged in.
wp_enqueue_script( 'jacob-k-ads', get_stylesheet_directory_uri().'/js/ads.js' );
}
}