Voglio accodare un file .js al mio tema child

5 feb 2015, 12:08:29
Visualizzazioni: 89.6K
Voti: 22

Ho provato ad accodare un file .js personalizzato nella directory del mio tema child.

Nel file functions.php del mio tema child ho trovato il seguente codice

/* Dopo questo, puoi sovrascrivere le funzioni pluggable di Accessible Zen o aggiungere le tue.
 * Ricorda, fai del tuo meglio per mantenere l'accessibilità! :)
 *
 */
 add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}

dove solo questa parte è stata implementata da me e dovrebbe caricare il mio custom-script.js dalla cartella js/

wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );

Purtroppo non funziona, qualcuno può aiutarmi?

*Aggiornamento 2

Il codice ora appare così e funziona, non funzionava quando ho semplicemente aggiunto la funzione all'altro add_action. Grazie a tutti per l'aiuto! Tuttavia mi chiedo se non ci sia un modo per ridurre questo codice.

add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}

/*aggiungi il mio script jquery personalizzato*/
add_action( 'wp_enqueue_scripts', 'menu_scripts' );
function menu_scripts() {
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
wp_enqueue_script(
    'custom-script',
    get_stylesheet_directory_uri() . '/js/custom-script.js',
    array( 'jquery' )
);
        }

A cosa serve questa riga?

wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );

È necessaria?

4
Commenti

wp_enqueue_script( 'custom-script.js', get_stylesheet_directory_uri() . 'js/custom-script.js', array('jquery') );

Pieter Goosen Pieter Goosen
5 feb 2015 12:12:31

@Pieter Ho adattato la tua modifica ma ancora non funziona. Questo è ciò che ho nel mio file .js e funziona se lo metto direttamente in page.php per esempio: <script> if (jQuery) {

alert("La libreria jQuery è caricata!");

} else {

alert("La libreria jQuery non è stata trovata!");

} </script>

MrKainig MrKainig
5 feb 2015 12:19:48

@Pieter Ok ho inserito il codice nella domanda

MrKainig MrKainig
5 feb 2015 12:29:44

Rimuovi i tag script dal tuo file js

Pieter Goosen Pieter Goosen
5 feb 2015 12:34:03
Tutte le risposte alla domanda 3
11
43

Ecco un esempio funzionante:

add_action( 'wp_enqueue_scripts', 'menu_scripts' );
function menu_scripts() {
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
wp_enqueue_script(
    'custom-script',
    get_stylesheet_directory_uri() . '/js/custom_script.js',
    array( 'jquery' )
);
        }

Oppure così, che apparentemente carica più velocemente:

function my_scripts_method() {
    wp_enqueue_script(
        'custom-script',
        get_stylesheet_directory_uri() . '/js/custom_script.js',
        array( 'jquery' )
    );
}

add_action( 'wp_enqueue_scripts', 'my_scripts_method' );

Fonte http://codex.wordpress.org/Function_Reference/wp_enqueue_script

get_template_directory_uri() funzionerà solo in un tema genitore.

5 feb 2015 12:30:19
Commenti

Perché non usi get_stylesheet_directory_uri()?

Pieter Goosen Pieter Goosen
5 feb 2015 12:33:24

Entrambi funzionano secondo i miei test.

Brad Dalton Brad Dalton
5 feb 2015 12:37:18

Ho provato il primo metodo, ma non ha funzionato. Potresti postare il codice completo (includendo i miei enqueue esistenti che funzionano)? Perché non so come implementare correttamente il tuo codice con quello che ho già nel mio functions.php

MrKainig MrKainig
5 feb 2015 12:37:46

Sì, lo fanno, ma get_stylesheet_directory_uri() è più veloce :-)

Pieter Goosen Pieter Goosen
5 feb 2015 12:39:15

È solo un esempio funzionante. Devi fare un po' di lavoro da parte tua per imparare come integrarlo con il tuo codice. Ora puoi modificare il tuo codice in modo che carichi gli script nel tuo tema.

Brad Dalton Brad Dalton
5 feb 2015 12:42:18

@BradDalton Beh, ho provato ma non ha funzionato per me. Devo aggiungere un secondo "add action" o una seconda "function" o configurare l'"add action" o configurare la "function"? Ci sono così tante possibilità. Se qualcuno potesse spiegarmi brevemente qual è la best practice - o cosa funziona effettivamente - mostrandomi come implementare quell'esempio funzionante nel mio codice esistente. Sarebbe davvero fantastico e mi risparmierebbe un mal di testa

MrKainig MrKainig
5 feb 2015 13:11:42

Cosa hai testato finora? Gli esempi sopra sono stati entrambi testati e funzionano.

Brad Dalton Brad Dalton
5 feb 2015 14:28:02

@MrKainig controlla nella console del browser se il tuo script si sta caricando e se ricevi errori jquery. Hai rimosso i tag script nel tuo file js, dato che non dovrebbero esserci? Non riesco a vedere che il codice in questa risposta non funzioni per te. Il tuo script dovrebbe caricarsi.

Pieter Goosen Pieter Goosen
5 feb 2015 14:43:32

@BradDalton Ho aggiunto la funzione all'interno del mio add_action esistente, ma non ha funzionato. Quando ho copiato l'esempio funzionante 1:1 sotto il mio add_action esistente, ha funzionato perfettamente.

Il post è stato aggiornato ancora una volta. Grazie ragazzi :)

MrKainig MrKainig
6 feb 2015 11:15:30

Grazie per la parte "get_template_directory_uri() funzionerà solo in un tema genitore." Mi ha fatto venire mal di testa per un paio di giorni

0xh8h 0xh8h
18 dic 2016 10:20:23

il secondo metodo funziona perfettamente per me semplicemente cambiando custom-script in parent-script.

NomanJaved NomanJaved
20 set 2019 17:21:33
Mostra i restanti 6 commenti
0

Controlla i tuoi handle! Lo script potrebbe non caricarsi se scegli un handle già utilizzato altrove. Se tutto sembra corretto e non ci sono errori ma lo script non si carica, verifica l'installazione per vedere se qualcos'altro sta usando lo stesso handle.

Nel mio caso, dato che sto estendendo un tema genitore tramite un child theme, ho (stupidamente, a posteriori!) mantenuto la stessa convenzione di denominazione del genitore. Lezione imparata!

3 giu 2020 13:10:57
0

Di solito lo faccio in questo modo:

Vai al tema child

  1. crea una cartella js all'interno del tema child
  2. crea un file script.js all'interno della cartella js

e poi incolla questo codice all'interno del file script.js:

add_action( 'wp_enqueue_scripts', 'custom_scripts', 10 );
function custom_scripts() {
    wp_enqueue_script('custom_javascript', get_stylesheet_directory_uri() . '/js/script.js', array('jquery'), '1.0.0', true );
}
16 apr 2021 19:07:59