add action wp_head non funziona

18 ott 2013, 19:55:58
Visualizzazioni: 21K
Voti: 3

Sto cercando di aggiungere del codice nell'head (nello specifico un blocco di script di tracking) tramite un plugin che sto sviluppando.

Il plugin ha un'interfaccia dove l'utente inserisce alcuni dettagli che vengono poi aggiunti alla tabella delle opzioni. Questa parte funziona perfettamente finora. Ma poi voglio scrivere un'istruzione condizionale che, se c'è un'opzione attiva, aggiunga lo script nell'head. In pratica ho tutto questo nel file principale del plugin e appare così:

if(get_option( 'MyOptionName' )){
    function testingone(){ ?>
        <script>var Script = VaQui; </script>
    <?php ;}
    add_action('wp_head','testingone');
}

Ho provato a inserire questo codice all'interno del blocco che recupera i dati e li aggiunge alle opzioni, ma non ha funzionato. Quindi ho deciso di farlo in questo modo, dove controlla se esiste un'opzione nella tabella, ma anche questo non inietta nulla nell'head. In alcuni posti ho visto persone mettere l'add_action sopra la funzione, ma nel codex viene mostrato un esempio dove è posto sotto. In ogni caso ho provato entrambi i modi e ho fallito.

Qualcuno riesce a vedere dove sta l'errore?

Grazie

2
Commenti

Hai provato a usare echo o print_r sul valore per vedere cosa restituisce? Forse è semplicemente un errore di battitura nel nome dell'opzione rispetto alla voce in wp_options

Eric Holmes Eric Holmes
18 ott 2013 20:05:14

Cambia if(get_option( 'MyOptionName' )){ in if ( true ) {. Se il codice viene eseguito allora sai che get_option( 'MyOptionName' ) restituisce false.

Charles Clarkson Charles Clarkson
18 ott 2013 20:06:07
Tutte le risposte alla domanda 4
1

Sposta il add_action() fuori dalla funzione e metti il condizionale all'interno del callback. Inoltre, se stai stampando uno script direttamente, usa wp_print_scripts invece di wp_head. Hai anche un errore di sintassi.

function testingone(){ 
    if( get_option( 'MyOptionName' ) ) {
        ?>
        <script>var Script = GoesHere; </script>
        <?php
    }
}
add_action( 'wp_print_scripts','testingone' );
18 ott 2013 20:07:05
Commenti

Ha funzionato perfettamente, grazie mille. Anche il metodo sopra indicato funzionava, ma se wp_print_scripts è una pratica migliore, userò quello.

robolist robolist
18 ott 2013 20:36:19
1

Prova a modificare il tuo codice in questo modo:

function testingone() {
    if( FALSE !== get_option( 'MyOptionName' ) ) {
        echo( 'ok, questo è nell\'head!' );
    } 
}
add_action( 'wp_head', 'testingone' );

Inoltre, controlla nei file del tuo tema (molto probabilmente header.php) per assicurarti che la funzione wp_head() venga chiamata, e verifica che l'opzione MyOptionName sia impostata per il sito.

Aggiunta nella modifica -- Dovresti anche usare wp_enqueue_script() per aggiungere JavaScript al tuo sito, anziché inserirli direttamente nell'<head>.

Riferimenti

18 ott 2013 20:05:10
Commenti

Non ha funzionato esattamente in questo modo per me, ma ho provato wp_print_scripts come suggerito da Chip Bennett e quello ha funzionato. Comunque grazie per l'aiuto e i consigli. salute

robolist robolist
18 ott 2013 20:37:30
1

vedi il codice qui sotto. Aggiungi un'istruzione IF all'interno della funzione.

function testingone(){ 
    if(get_option( 'MyOptionName' )){
    ?>
    <script>var Script = GoesHere; </script>
    <?php } 
      }
add_action('wp_head','testingone');
18 ott 2013 20:05:21
Commenti

Ha funzionato perfettamente, anche se ero sicuro di aver già provato questo metodo in precedenza, evidentemente no :) Grazie mille.

robolist robolist
18 ott 2013 20:34:33
6
function plugin_script() {
       wp_enqueue_script( 'Jquery-min', WP_PLUGIN_URL. '/Test Plugin/jquery-min.js', false, '1.11.0' );<br/>
       wp_enqueue_style('pluginstyle', WP_PLUGIN_URL. '/Test Plugin/pluginstyle.css',false,'1.0',"all");<br/>
}
add_action( 'wp_head', 'plugin_script' );

L'hook di azione "wp_head" viene attivato all'interno della sezione "head" della pagina.

wp_enqueue_script() viene utilizzato per eseguire gli script JavaScript mentre wp_enqueue_style() serve per includere i fogli di stile CSS dal plugin. "WP_PLUGIN_URL." recupera i file dalla cartella del plugin. "Test plugin" è il nome del tuo plugin "pluginstyle.css" è il foglio di stile del plugin. "jquery-min.js" è lo script JavaScript del plugin.

4 lug 2016 14:00:29
Commenti

Per favore spiega come risponde, semplicemente scaricare il codice non è una buona risposta

bravokeyl bravokeyl
4 lug 2016 14:04:40

non è un codice scaricato, l'ho già utilizzato nel mio plugin. Qual è il tuo dubbio, chiedimi e chiarirò in quel codice.

Praveen Praveen
4 lug 2016 14:08:13

hai provato a usare quel codice @bravokey

Praveen Praveen
4 lug 2016 14:10:12

Non l'ho provato, ti stavo suggerendo di aggiungere qualche spiegazione oltre al codice postato per mostrare come risponde alla domanda originale.

bravokeyl bravokeyl
4 lug 2016 14:11:28

Grazie per il tuo suggerimento, in realtà sono nuovo in questo @bravokeyl

Praveen Praveen
4 lug 2016 14:20:58

Per favore vedi [risposta]

fuxia fuxia
4 lug 2016 15:04:36
Mostra i restanti 1 commenti