Belirli yazı ve / veya sayfalara javascript dosyası eklemenin en etkili yolu?


18

Özellikle bir yazı ve / veya sayfa için bir javascript dosyası eklemek için en verimli yöntem ne olduğunu merak ediyorum.

İşte geldiğim birkaç çözüm:

  • HTML düzenleme görünümüne geçin ve JavaScript'inizi orada yayınlayın (oldukça kötü bir çözüm)
  • Anahtar ve değer çiftlerinde söz konusu yazı / sayfa için özel JavaScript'e sahip özel alanlar
  • Footer.php dosyasına, hangi sayfaya olduğunuza bağlı olarak JavaScript dosyaları yükleyin (bu yine de çok fazla koşullu duruma neden olur)

Yan notta, JavaScript dosyalarının hiçbiri sayfalar arasında paylaşılmayacak - tam olarak görüntülemekte olduğunuz şeye özgü olacaktır.

Düşüncesi olan var mı?


Meta kutular / özel alanlar en iyi seçeneğinizdir
Miha Rekar

Verimliliği nasıl tanımlarsınız?
fuxia

1
'Verimli' ile kastedilen en az miktarda kod fazlalığı ve bunu özel olarak tek bir yazı / sayfa için yapmanın en etkili yoludur.
fareler

Yanıtlar:


31

Verimlilik arasındaki en iyi dengeyi ve javascript eklemek için uygun wordpress yöntemlerini kullanmak, temalar function.php dosyasına bu satırlar boyunca bir şeyler eklemek olacağını düşünüyorum. Örneğin:

functions.php:

function load_scripts() {
    global $post;

    if( is_page() || is_single() )
    {
        switch($post->post_name) // post_name is the post slug which is more consistent for matching to here
        {
            case 'home':
                wp_enqueue_script('home', get_template_directory_uri() . '/js/home.js', array('jquery'), '', false);
                break;
            case 'about-page':
                wp_enqueue_script('about', get_template_directory_uri() . '/js/about-page.js', array('jquery'), '', true);
                break;
            case 'some-post':
                wp_enqueue_script('somepost', get_template_directory_uri() . '/js/somepost.js', array('jquery'), '1.6', true);
                break;
        }
    } 
}

add_action('wp_enqueue_scripts', 'load_scripts');

Bu, yüklenen Nelerin üzerinde tam kontrol sağlayan nerede, nereye yüklenen Nelerin düzenleme için temaların functions.php dosyasına bir merkezi konum: ve, yayınlarınız ve sayfalara javascript eklemek için bu şekilde kullanır wordpress yöntemleri güvenle .


1
Güzel küçük işlevi. 'Merkezi bir konuma' sahip olmanızın yararlı olması konusunda haklısınız. Çok teşekkürler.
fareler

3
Sanırım bu biraz temizlenebilir. Temelde aynı şeyi iki farklı anahtar kutusu ile kontrol ediyorsunuz. Her iki anahtar durumu ve koşullu varsa birleştirin diyebilirim if (is_page() || is_single()). Sen ne düşünüyorsun Ben?
fareler

Bana bir düzelme gibi geliyor. İyi bir!
Ben HartLenn

@Ben öyle functions.php bir iç tema veya wp-includes ? Benim sayfa başlığı olan Home Online Erişim ve senin fonksiyon changeing koyduk homeiçin Access to Home Onlineama çalışmıyor?
Ciasto piekarz

@Ciastopiekarz Kodun temalar function.php dosyasına gittiğini daha iyi göstermek için cevabımı güncelledim.
Ben HartLenn

2

Ne yapacağımı ya altbilgi ya da üstbilgi yer ve php koşullarını kullanın.

Örneğin:

<?php if (is_page ('your-page')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } elseif ( is_page ('another')){?>

  <script type="text/javascript" src"the file path"></script>

<?php } else { ?>

  <script type="text/javascript" src"the file path"></script>

<?php } ?>

Bu şekilde, her sayfa yükünde tüm komut dosyalarını çağırmamanız ve yalnızca ihtiyacınız olanları çağırmanız gerekir.

İşte Wordpress kodeksine bir bağlantı http://codex.wordpress.org/Conditional_Tags

Ayrıca, yalnızca gönderi bazında çağrılabilecek özel komut dosyalarınız varsa özel alanları kullanın.


Teşekkürler Nicole - bu # 3 idi. Çok fazla sayfam olmayacak diye düşünmek iyi bir çözüm ... hala düşünüyor.
fareler

Whati yukarıdaki gibi wordpress kodeksinin çeşitli öğeleri ile kullanılabilir: is_categories, is_single (gönderiler için), is_post_type ... Yukarıdaki cevabımda wordpress'in koşul listesine bir bağlantı ekledim.
Nicole

0

Test edilen diğer yol aşağıda doğrudan sayfadan editörden ekleme yapmak ve komut dosyası etiketinde yorum yapmamaktır.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.