Wordpress仅在用户未登录时执行javascript文件

时间:2018-06-13 23:04:57

标签: javascript php wordpress templates include

我只是在用户没有登录的情况下尝试在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'
);

有什么想法吗?提前谢谢!

1 个答案:

答案 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' );
    }
}
相关问题