Come aggiungere uno snippet javascript al piè di pagina che richiede jQuery


27

So di poter aggiungere un file di script al piè di pagina di wordpress che richiede jquery usando questo codice:

<?php
function my_scripts_method() {
   // register your script location, dependencies and version
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0',
       true);
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

E se volessi aggiungere solo un normale frammento di jquery in linea, non un file. Come si può fare.

modificare

So di poter usare questo script per aggiungere qualcosa al piè di pagina:

<?php
function myscript() {
?>
<script type="text/javascript">
 // This depends on jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');

Ma come specificare lo script utilizzato richiede l'esecuzione di jquery .


Non esiste una funzione integrata per farlo che io sappia, è perché wp_register_scripted wp_enqueue_scriptesiste, ma puoi controllare usando jquery stesso.
Wyck,

2
Ci scusiamo per il downvote, ma non credo che tu capisca la mia domanda. Ho letto il codice e conosco l'opzione. Ma non voglio wp_enqueue_scriptun file di script nel piè di pagina, voglio aggiungere un frammento nel piè di pagina che richiede jquery. Ho declassato la risposta presa direttamente dal codice. Ho letto il codice e non ho trovato una risposta, ecco perché faccio una domanda. Se mi reindirizzi di nuovo al codice, decoto.
Saif Bechan,

Grazie Wyck, penso che sia così, grazie per aver compreso correttamente la domanda. Penso che userò solo uno script JS esterno invece di essere sicuro che lo script possa essere eseguito.
Saif Bechan,

Risposte:


30

Il modo più semplice per farlo è in realtà una combinazione di wp_enqueue_scripte le azioni a piè di pagina a cui Saif e v0idless hanno già fatto riferimento. Uso spesso jQuery nei miei temi e plugin, ma ho inserito anche tutti gli altri script nel piè di pagina.

Il modo migliore per mettere in coda le cose sarebbe questo:

function myscript() {
?>
<script type="text/javascript">
  if ( undefined !== window.jQuery ) {
    // script dependent on jQuery
  }
</script>
<?php
}
add_action( 'wp_footer', 'myscript' );

function myscript_jquery() {
    wp_enqueue_script( 'jquery' );
}
add_action( 'wp_head' , 'myscript_jquery' );

Ma questo codice frammentato presuppone che tu sia quello in coda allo script, cioè lo stai facendo nel tuo plugin o tema.

Al momento, non è possibile aggiungere uno script in linea al piè di pagina di WordPress e caricarlo anche con dipendenze. Ma c'è un'alternativa, se vuoi.

L'alternativa

Quando WordPress funziona con gli script, li carica internamente su un oggetto per tenerne traccia. Ci sono essenzialmente 3 elenchi all'interno dell'oggetto:

  • registrato
  • coda
  • fatto
  • fare

Quando si registra per la prima volta uno script con wp_register_scripts()esso viene inserito nell'elenco registrato. Quando wp_enqueue_script()lo script, viene copiato nell'elenco delle code. Dopo che è stato stampato sulla pagina, viene aggiunto all'elenco completo.

Pertanto, anziché accodare lo script del piè di pagina per richiedere jQuery, è possibile documentare la necessità di utilizzare jQuery e controllare a livello di codice per assicurarsi che jQuery sia caricato.

Questo utilizza wp_script_is()per verificare dove è elencato lo script.

function myscript() {
    if( wp_script_is( 'jquery', 'done' ) ) {
    ?>
    <script type="text/javascript">
      // script dependent on jQuery
    </script>
    <?php
    }
}
add_action( 'wp_footer', 'myscript' );

Si potrebbe essere in grado di utilizzare questo stesso codice per forzare jQuery per caricare nel piè di pagina pure, ma non ho provato che ... così il vostro chilometraggio la mia variano.


lo snippet di codice fornito è accettato dagli standard di sviluppo del plug-in di WordPress? Se sì, lo
userò

L'ultimo frammento? No. I plugin di WordPress dovrebbero sempre soddisfare i requisiti degli script. Forzare il caricamento di jQuery al di fuori del sistema di coda in questo modo è solo qualcosa che dovresti fare sul tuo sito dove controlli il 100% dell'ambiente. Non è mai appropriato che un plugin lo faccia.
EAMann,

allora puoi darmi qualche esempio di lavoro per favore ... ????
Laraib,

Perché sto sviluppando il mio primo plug-in di WordPress e mi piacerebbe che fosse accettato dal team di WordPress ... in attesa di una tua risposta, per favore .... dì la tua su questo in modo che io possa creare e accettare il mio plug-in ...
Laraib,

12

Da wordpress 4.5 è possibile aggiungere script inline di wp_add_inline_script(). Per aggiungere uno snippet javascript al piè di pagina che richiede jQuery, questo codice ti aiuta

function enqueue_jquery_in_footer( &$scripts ) {

    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' );

function theme_prefix_enqueue_script() {
   if(!wp_script_is('jquery', 'done')) {
     wp_enqueue_script('jquery');
   }
   wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' );
}
add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );

wp_add_inline_script con wordpress jquery


1

Usa l' wp_footerazione in questo modo:

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSERT SCRIPT HERE **/
</script>
<?php
}

1
Questa non è una buona risposta Ho chiesto come potevo specificare lo script richiesto jQuery. Se l'utente non ha jquery in esecuzione, l'implementazione non verrà eseguita.
Saif Bechan,

0

So che OP vuole specificare un requisito su jQuery e che gli autori di WordPress avrebbero dovuto consentire l'accodamento dei frammenti adiacenti ai file di script, ma non lo hanno fatto, quindi consiglio di non provare a forzarlo. Se non vuoi scherzare con la coda o il suo ordine, come me (perché sto usando altri plugin che combinano e ottimizzano gli script), la risposta è davvero usare l' wp_footerazione in questo modo:

<?php

add_action(
    'wp_footer'
    , function() {
        ?>
        <script>
            if (window.jQuery) {
                // your snippet
            }
        </script>
        <?php
    }
    , 21 # after enqueued footer scripts
);

-2

È possibile utilizzare l' wp_footerazione per farlo. Controlla il codice per wp_footer .


Lo so, ma come puoi specificare che lo script che aggiungi al piè di pagina dipende da jquery. Controlla la mia modifica per essere più specifico.
Saif Bechan,

Ti preoccupi di leggere il codice prima di votare le risposte delle persone? Hai mai letto in_footerdell'argomento wp_enqueue_script? Leggi questo: codex.wordpress.org/Function_Reference/wp_enqueue_script . Ti dice come usarlo con l' wp_footerazione.
Rutwick Gangurde,
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.