![](/img/trans.png)
[英]Rails only execute javascript if current_user logged_in
[英]Wordpress execute javascript file only if user is not logged in
僅當用戶未登錄時,我才嘗試在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'
);
有任何想法嗎? 提前致謝!
wp_enqueue_script()
應該在wp_enqueue_scripts
鈎子上運行。 這也應該封裝在一個函數中,或者至少封裝在一個閉包/匿名函數中 。
旁注,您現在想開始正確設置格式/縮進代碼- 以后,謝謝您!
is_user_logged_in()
:您正在檢查用戶是否“登錄”。您可以使用“非”邏輯運算符確保is_user_logged_in()
返回false !
。
B.您不需要注冊腳本,因為wp_enqueue_script
會為您注冊。 實際上,只有在頁面上的短代碼處於活動狀態時,才需要像加載腳本一樣更加花哨的時間來注冊腳本。
C.通常,您需要為腳本/樣式句柄加上前綴,因為它們應該是唯一的 ,否則可能會發生沖突。
D.通常,你會希望使用get_template_directory_uri()
或get_stylesheet_directory_uri()
在get_bloginfo()
因為get_bloginfo( $directory_type )
是真的只是為這些功能的包裝 。
這樣的事情會讓您入門:
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' );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.