Najbardziej wydajny sposób dodawania pliku javascript do konkretnych postów i / lub stron?

17

Zastanawiam się, jaka jest najbardziej efektywna metoda dodania pliku javascript specjalnie dla posta i / lub strony.

Oto kilka rozwiązań, które wymyśliłem:

  • Przejdź do widoku edycji HTML i opublikuj tam swój JavaScript (całkiem złe rozwiązanie)
  • Niestandardowe pola z określonym kodem JavaScript dla tego posta / strony w parach klucz i wartość
  • W footer.php ładuj pliki JavaScript w zależności od strony, na której jesteś (prowadzi to jednak do wielu warunków warunkowych)

Na marginesie, żaden z plików JavaScript nie będzie udostępniany między stronami - będzie dosłownie specyficzny dla tego, co aktualnie przeglądasz.

jakieś pomysły?

mousesports
źródło
Najlepszą opcją są pola meta / pola niestandardowe
Miha Rekar,
Jak zdefiniowałbyś efektywność?
fuxia
1
Przez „wydajny” rozumiem najmniejszą nadmiarowość kodu i najskuteczniejszy sposób na zrobienie tego specjalnie dla pojedynczego posta / strony.
mousesports,

Odpowiedzi:

30

Myślę, że najlepsza równowaga między wydajnością a użyciem odpowiednich metod Wordpress do dodawania javascript byłaby dodaniem czegoś w tym kierunku do pliku motywów funkcji.php. Na przykład:

funkcje.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');

Daje to pełną kontrolę nad tym, co jest ładowany gdzie, centralnej lokalizacji w pliku motywy graficzne functions.php do edycji, co jest ładowany, gdy: i, w ten sposób wykorzystuje WordPress metody dodawania JavaScript do Twoich postów i stron bezpiecznie .

Ben Hart Lenn
źródło
1
Fajna mała funkcja. Masz rację, że użyteczne jest posiadanie „scentralizowanej lokalizacji”. Wielkie dzięki.
mousesports,
3
Myślę, że można to trochę posprzątać. Zasadniczo sprawdzasz to samo za pomocą dwóch różnych skrzynek przełączników. Powiedziałbym, że łączymy oba przypadki przełączników i warunkową, jeśli to możliwe if (is_page() || is_single()). Jak myślisz, Ben?
mousesports,
Brzmi dla mnie jak poprawa. Dobry!
Ben HartLenn,
@Ben to jest functions.php jeden wewnątrz motywu, czy wp-zawiera ? mój tytuł strony jest dostęp do online i mam umieścić swoją funkcję zmiana spowoduje homesię Access to Home Online, ale to nie działa?
Ciasto piekarz
@Ciastopiekarz Zaktualizowałem moją odpowiedź, aby lepiej pokazać, że kod znajduje się w pliku motywów funkcji.php.
Ben HartLenn
2

Chciałbym umieścić w stopce lub nagłówku i użyć warunkowych php.

Na przykład:

<?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 } ?>

W ten sposób nie wywołujesz wszystkich skryptów przez cały czas przy każdym ładowaniu strony i tylko wywołujesz te, których potrzebujesz.

Oto link do kodeksu Wordpress http://codex.wordpress.org/Conditional_Tags

A jeśli masz specjalne skrypty, które mogą wymagać wywołania tylko na post, użyj niestandardowych pól.

Nicole
źródło
Dzięki Nicole - to był numer 3. To przyzwoite rozwiązanie, biorąc pod uwagę, że nie będę mieć wielu stron ... wciąż się zastanawiam.
mousesports,
To, co mam powyżej, może być używane z różnymi elementami kodeksu wordpress, takimi jak: is_categories, is_single (dla postów), is_post_type ... W mojej powyższej odpowiedzi dodałem link do listy warunkowej wordpress.
Nicole,
0

Drugi przetestowany sposób to dodawanie strony bezpośrednio z edytora i dodawanie komentarzy za pomocą tagu skryptu, w przeciwnym razie nie zadziała.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
Dev G
źródło