Qual è il modo più efficiente per aggiungere un file javascript a specifici articoli e/o pagine?

10 ott 2012, 22:30:36
Visualizzazioni: 59.1K
Voti: 28

Mi chiedo quale sia il metodo più efficiente per aggiungere un file javascript specificamente per un articolo e/o una pagina.

Ecco alcune soluzioni che ho pensato:

  • Passare alla visualizzazione di modifica HTML e inserire il JavaScript lì (soluzione piuttosto scadente)
  • Campi personalizzati con il JavaScript specifico per quell'articolo/pagina nelle coppie chiave & valore
  • Nel footer.php, caricare i file JavaScript in base alla pagina in cui ti trovi (questo però porta a molti condizionali)

Da notare che nessuno dei file JavaScript sarà condiviso tra le pagine - sarà letteralmente specifico per quello che stai visualizzando al momento.

Qualche suggerimento?

3
Commenti

Le meta box / campi personalizzati sono la tua migliore opzione

Miha Rekar Miha Rekar
10 ott 2012 22:33:14

Come definiresti l'efficienza?

fuxia fuxia
10 ott 2012 22:44:45

Con "efficiente" intendo la minor quantità di ridondanza nel codice e il modo più efficace per farlo specificatamente per un singolo post/pagina.

mousesports mousesports
10 ott 2012 23:44:17
Tutte le risposte alla domanda 3
7
50

Credo che il miglior compromesso tra efficienza e l'utilizzo dei metodi corretti di WordPress per aggiungere JavaScript sia inserire qualcosa di simile nel file functions.php del tuo tema. Per esempio:

functions.php:

function load_scripts() {
    global $post;

    if( is_page() || is_single() )
    {
        switch($post->post_name) // post_name è lo slug del post, più coerente per il matching qui
        {
            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');

Questo ti dà il controllo completo su cosa viene caricato e dove, una posizione centralizzata nel file functions.php del tuo tema per modificare cosa viene caricato dove: e, in questo modo, utilizza i metodi di WordPress per aggiungere JavaScript ai tuoi post e pagine in modo sicuro.

11 ott 2012 00:45:08
Commenti

Funzione carina e utile. Hai ragione sull'utilità di avere una 'posizione centralizzata'. Grazie mille.

mousesports mousesports
11 ott 2012 00:57:31

Immagino si possa pulire un po' il codice. Stai fondamentalmente controllando la stessa cosa con due switch-case diversi. Direi di combinare entrambi gli switch-case, e il condizionale if potrebbe essere if (is_page() || is_single()). Che ne pensi Ben?

mousesports mousesports
11 ott 2012 04:40:52

Sembra un miglioramento secondo me. Ottima idea!

Ben HartLenn Ben HartLenn
11 ott 2012 05:01:01

@Ben è il file functions.php presente nel tema o in wp-includes? Il titolo della mia pagina è Access to Home Online e ho inserito la tua funzione cambiando home in Access to Home Online ma non funziona?

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

@Ciastopiekarz ho aggiornato la mia risposta per mostrare meglio che il codice va nel file functions.php del tuo tema.

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

Nessun problema, l'ho fatto funzionare tempo fa

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

Questo non funziona per i child theme, ma può essere facilmente risolto. Sostituisci get_template_directory_uri() con get_stylesheet_directory_uri()

jastram jastram
30 dic 2020 16:12:15
Mostra i restanti 2 commenti
2

Quello che farei è posizionare nello header o nel footer e utilizzare i condizionali PHP.

Per esempio:

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

In questo modo non richiami tutti gli script ogni volta che una pagina viene caricata, ma solo quelli di cui hai bisogno.

Ecco un link al codex di Wordpress http://codex.wordpress.org/Conditional_Tags

E se hai script particolari che potrebbero essere richiamati solo per un singolo post, utilizza i campi personalizzati.

10 ott 2012 23:18:18
Commenti

Grazie Nicole - questo era il punto #3. È una soluzione decente considerando che non avrò molte pagine... ci sto ancora pensando.

mousesports mousesports
10 ott 2012 23:45:50

Quello che ho scritto sopra può essere usato con vari elementi del codex di WordPress come: is_categories, is_single (per i post), is_post_type ... Ho aggiunto un link alla lista condizionale di WordPress nella mia risposta sopra.

Nicole Nicole
10 ott 2012 23:48:37
0

L'altro metodo testato è il seguente: aggiungi direttamente nella pagina dall'editor e inserisci i commenti all'interno del tag script, altrimenti non funzionerà.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. Il valore di a è: " + a);
-->
</script>
2 mar 2017 06:07:16