Il modo più efficiente per aggiungere file javascript a post e / o pagine specifici?


17

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

Ecco alcune soluzioni che ho trovato:

  • Passa alla visualizzazione di modifica HTML e pubblica il tuo JavaScript (soluzione piuttosto scadente)
  • Campi personalizzati con JavaScript specifico per quel post / pagina nelle coppie chiave e valore
  • In footer.php, carica i file JavaScript a seconda della pagina in cui ti trovi (questo porta a molti condizionali però)

A parte questo, nessuno dei file JavaScript verrà condiviso tra le pagine: sarà letteralmente specifico per ciò che stai visualizzando.

qualche idea?


Meta box / campi personalizzati sono la tua migliore opzione
Miha Rekar

Come definiresti l'efficienza?
fuxia

1
Per "efficiente" intendo la minima quantità di ridondanza del codice e il modo più efficace per farlo specificatamente per un singolo post / pagina.
Mousesports,

Risposte:


30

Penso che il miglior equilibrio tra efficienza e l'utilizzo di metodi wordpress adeguati per l'aggiunta di JavaScript sarebbe l'aggiunta di qualcosa lungo queste linee al tuo file Functions.php temi. Per esempio:

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

Questo ti dà il pieno controllo su ciò che viene caricato dove, una posizione centralizzata nel tuo file Functions.php temi per modificare ciò che viene caricato dove: e, in questo modo, utilizza i metodi wordpress per aggiungere javascript ai tuoi post e alle tue pagine in modo sicuro .


1
Bella piccola funzione. Hai ragione sull'utilità di avere una "posizione centralizzata". Grazie mille.
Mousesports,

3
Immagino che questo possa essere pulito un po '. Fondamentalmente stai controllando la stessa cosa con due diversi switch-case. Direi di combinare entrambi i casi e il condizionale se potesse essere if (is_page() || is_single()). Che ne pensi Ben?
Mousesports,

Mi sembra un miglioramento. Buona!
Ben HartLenn,

@Ben è la funzione.php all'interno di un tema o in wp- Includes ? il mio titolo della pagina è di accesso alla linea e ho messo la funzione changeing homea Access to Home Onlinema non sta funzionando?
Ciasto piekarz,

@Ciastopiekarz Ho aggiornato la mia risposta per mostrare meglio che il codice va nel tuo file Functions.php.
Ben HartLenn,

2

Quello che vorrei fare è posizionare nel piè di pagina o nell'intestazione e usare 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 si chiamano sempre tutti gli script su ogni pagina caricata e si chiamano solo quelli necessari.

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

E se disponi di script speciali che potrebbero essere chiamati solo in base al post, utilizza i campi personalizzati.


Grazie Nicole - questo era il n. 3. È una soluzione decente considerando che non avrò molte pagine ... ancora in considerazione.
Mousesports,

Ciò che sopra può essere usato con i vari elementi del codice wordpress come: is_categories, is_single (per i post), is_post_type ... Ho aggiunto un link all'elenco condizionale di wordpress nella mia risposta sopra.
Nicole,

0

L'altro modo testato è di seguito aggiungere la pagina direttamente dall'editor e aggiungere commenti con il tag dello script, altrimenti non funzionerà.

<script type="text/javascript">
<!--
var a = 5;
alert("hello world. The value of a is: " + a);
-->
</script>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.