2011-10-17 15 views
0

我想在我正在構建的Wordpress網站的帖子末尾添加社交按鈕(Facebook,Twitter,G +)。他們只需要顯示在帖子的永久鏈接頁面(在single.php中編輯)。因此,我的問題是,我應該把必要的腳本放在header.php中(這會將它們放在適當位置,但即使不需要它們也會始終加載),還是應該將它們放在single.php中的某個位置將意味着它們只在必要時加載,但位於<body>中間的某處)?JavaScript應該去哪裏只在single.php必需的WordPress?

+0

移動到http://wordpress.stackexchange.com/? –

回答

1

WordPress有一個function called is_single(),如果您目前正在處理單個頁面,則返回它。

只有在查看單個頁面時,纔可以包含腳本。你可以用

<?php if (is_single()) : ?> 
    <script src="http://twitter.com/path/to/bla"></script> 
<?php endif; ?> 

做到這一點,你可能想在頁面的末尾(收盤body -tag前右)來加載腳本,它可以讓加載腳本之前的頁面渲染。

+0

希望這樣的東西存在,謝謝! –

0

添加在body中間混合的腳本元素沒有任何問題,但是如果您想改善加載時間,您可能需要將script元素附加到footer.php。在dom的其餘部分加載後調用腳本將防止加載腳本阻止頁面的其餘部分進行呈現。

如果它是一個非常小的腳本,我覺得沒有理由不僅僅是將它們添加到內聯中,而是很容易看到它們影響的元素。

0

你可以把它們放在你的single.php的底部,但是你指出這會讓它們出現在頁面中間。

相反,把它們放在你的header.php,但內幕if語句來檢查它們是否需要(即它是一個單頁),像這樣:

<?php if (is_single()): ?> 
    <script>...</script> 
<?php endif;?> 

第一<?php和最後?>沒有必要/可能會導致問題,如果你把上面的代碼內部php標籤。無論哪種方式,在if語句中,應該是HTML,而不是PHP來實現這個功能。

1

執行此操作的最佳方法是使用wp_enqueue_scripts操作掛鉤。你應該總是用這個來避免衝突,並保持它帶來的所有好處。

我稍微修改了example from the doc來說明這一點:

<?php 
function my_scripts_method() { 
if(is_single()){ 
    // register your script location, dependencies and version 
    wp_register_script('custom_script', 
    get_template_directory_uri() . '/js/custom_script.js', 
    array('jquery'), 
    '1.0'); 
    // enqueue the script 
    wp_enqueue_script('custom_script'); 
} 
add_action('wp_enqueue_scripts', 'my_scripts_method'); 
?>