Cea mai eficientă metodă de a adăuga fișiere JavaScript în articole și/sau pagini specifice?

10 oct. 2012, 22:30:36
Vizualizări: 59.1K
Voturi: 28

Mă întreb care este cea mai eficientă metodă de a adăuga un fișier JavaScript specific pentru un articol și/sau o pagină.

Iată câteva soluții la care m-am gândit:

  • Comutarea la modul de editare HTML și inserarea JavaScript-ului acolo (o soluție destul de slabă)
  • Câmpuri personalizate (Custom fields) cu JavaScript specific pentru acel articol/pagină în perechile cheie & valoare
  • În footer.php, încărcarea fișierelor JavaScript în funcție de pagina pe care te afli (acest lucru duce însă la multe condiții)

Ca o observație, niciunul dintre fișierele JavaScript nu va fi partajat între pagini - va fi specific doar pentru ceea ce vizualizezi în momentul respectiv.

Aveți sugestii?

3
Comentarii

Meta box-urile / câmpurile personalizate sunt cea mai bună opțiune

Miha Rekar Miha Rekar
10 oct. 2012 22:33:14

Cum ai defini eficiența?

fuxia fuxia
10 oct. 2012 22:44:45

Prin "eficient" mă refer la cea mai mică cantitate de cod redundant și cel mai eficient mod de a face acest lucru în special pentru un singur articol/pagină.

mousesports mousesports
10 oct. 2012 23:44:17
Toate răspunsurile la întrebare 3
7
50

Cred că cel mai bun echilibru între eficiență și utilizarea metodelor corecte din WordPress pentru adăugarea de JavaScript ar fi adăugarea a ceva de genul acesta în fișierul functions.php al temei tale. De exemplu:

functions.php:

function load_scripts() {
    global $post;

    if( is_page() || is_single() )
    {
        switch($post->post_name) // post_name este slug-ul articolului, care este mai consistent pentru potrivire aici
        {
            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');

Această metodă îți oferă control total asupra a ceea ce se încarcă și unde, o locație centralizată în fișierul functions.php al temei tale pentru editarea a ceea ce se încarcă și unde: și, în plus, folosește metodele WordPress pentru a adăuga JavaScript în articole și pagini în siguranță.

11 oct. 2012 00:45:08
Comentarii

Funcție drăguță. Ai dreptate că e util să ai o 'locație centralizată'. Mersi mult.

mousesports mousesports
11 oct. 2012 00:57:31

Cred că asta poate fi optimizat puțin. Practic verifici același lucru cu două structuri switch diferite. Aș combina ambele structuri switch, iar condiția if ar putea fi if (is_page() || is_single()). Ce părere ai, Ben?

mousesports mousesports
11 oct. 2012 04:40:52

Sună ca o îmbunătățire pentru mine. Bună idee!

Ben HartLenn Ben HartLenn
11 oct. 2012 05:01:01

@Ben este functions.php din tema sau din wp-includes? Titlul paginii mele este Access to Home Online și am introdus funcția ta schimbând home cu Access to Home Online dar nu funcționează?

Ciasto piekarz Ciasto piekarz
7 feb. 2017 09:55:49

@Ciastopiekarz Am actualizat răspunsul meu pentru a arăta mai clar că codul trebuie introdus în fișierul functions.php al temei tale.

Ben HartLenn Ben HartLenn
13 mar. 2017 03:16:33

Nici o problemă, am reușit să-l fac să funcționeze acum ceva timp

Ciasto piekarz Ciasto piekarz
14 mar. 2017 00:20:35

Acest lucru nu funcționează pentru temele descendente (child themes), dar poate fi ușor remediat. Înlocuiți get_template_directory_uri() cu get_stylesheet_directory_uri()

jastram jastram
30 dec. 2020 16:12:15
Arată celelalte 2 comentarii
2

Ceea ce aș face este să plasez în subsolul sau antetul paginii și să folosesc condiționale PHP.

De exemplu:

<?php if (is_page ('pagina-ta')){?>

  <script type="text/javascript" src"calea-catre-fisier"></script>

<?php } elseif ( is_page ('alta-pagina')){?>

  <script type="text/javascript" src"calea-catre-fisier"></script>

<?php } else { ?>

  <script type="text/javascript" src"calea-catre-fisier"></script>

<?php } ?>

În acest fel, nu încarci toate scripturile de fiecare dată când se încarcă pagina, ci doar pe cele de care ai nevoie.

Iată un link către codex-ul WordPress http://codex.wordpress.org/Conditional_Tags

Și dacă ai scripturi speciale care ar putea fi necesare doar pentru anumite articole, folosește câmpuri personalizate.

10 oct. 2012 23:18:18
Comentarii

Mulțumesc Nicole - asta a fost #3. Este o soluție decentă având în vedere că nu voi avea multe pagini... încă o iau în considerare.

mousesports mousesports
10 oct. 2012 23:45:50

Ceea ce am mai sus poate fi folosit cu diverse elemente din codex-ul WordPress, cum ar fi: is_categories, is_single (pentru articole), is_post_type ... Am adăugat un link către lista de condiționale WordPress în răspunsul meu de mai sus.

Nicole Nicole
10 oct. 2012 23:48:37
0

Cealaltă metodă testată este cea de mai jos, adăugată direct în pagină din editor și adăugarea de comentarii în interiorul tag-ului script, altfel nu va funcționa.

<script type="text/javascript">
<!--
var a = 5;
alert("Salut lume. Valoarea lui a este: " + a);
-->
</script>
2 mar. 2017 06:07:16