add action wp_head nu funcționează

18 oct. 2013, 19:55:58
Vizualizări: 21K
Voturi: 3

Încerc să adaug niște cod în head (mai exact un bloc de script de tracking) printr-un plugin pe care îl dezvolt.

Plugin-ul are o interfață unde utilizatorul introduce câteva detalii care sunt apoi adăugate în tabela de opțiuni. Până aici totul funcționează perfect. Dar apoi vreau să scriu o instrucțiune condițională dacă există o opțiune deschisă atunci să adaug în head. Practic am totul în fișierul principal al plugin-ului și arată așa:

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

Am încercat să pun acest cod în interiorul blocului care preia datele și apoi le adaugă în opțiuni, dar nu a funcționat, apoi am decis să o fac în acest fel, unde verifică dacă există o opțiune în tabelă dar nici această metodă nu injectează nimic în head. În unele locuri am văzut că oamenii pun add_action deasupra funcției, dar în codex se arată un exemplu cu ea dedesubt. Oricum am încercat ambele variante și nu am reușit.

Poate cineva să vadă unde este greșeala?

Mulțumesc

2
Comentarii

Ai încercat să folosești echo sau print_r pentru a vedea ce valoare returnează? Poate este ceva simplu ca o greșeală de scriere în numele opțiunii tale comparativ cu intrarea din wp_options

Eric Holmes Eric Holmes
18 oct. 2013 20:05:14

Schimbă if(get_option( 'MyOptionName' )){ în if ( true ) {. Dacă codul este adăugat, atunci știi că get_option( 'MyOptionName' ) returnează false.

Charles Clarkson Charles Clarkson
18 oct. 2013 20:06:07
Toate răspunsurile la întrebare 4
1

Trage add_action() în afara funcției și pune condiționalul în interiorul callback-ului. De asemenea, dacă afișezi un script direct, folosește wp_print_scripts în loc de wp_head. Ai și o eroare de sintaxă.

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

A funcționat perfect, mulțumesc mult. Metoda de mai sus a funcționat și ea, dar dacă wp_print_scripts este o practică mai bună, voi folosi aceasta.

robolist robolist
18 oct. 2013 20:36:19
1

Încearcă să modifici codul:

function testingone() {
    if( FALSE !== get_option( 'MyOptionName' ) ) {
        echo( 'ok, acesta este în head!' );
    } 
}
add_action( 'wp_head', 'testingone' );

De asemenea, verifică în fișierele temei tale (cel mai probabil header.php) pentru a te asigura că funcția wp_head() este apelată și verifică dacă opțiunea MyOptionName este setată pentru site.

Editat pentru a adăuga -- Ar trebui să folosești și wp_enqueue_script() pentru a adăuga JavaScript în site-ul tău, în loc să le introduci direct în <head>.

Referințe

18 oct. 2013 20:05:10
Comentarii

Nu a funcționat exact așa pentru mine, dar am încercat wp_print_scripts așa cum a sugerat Chip Bennett și a funcționat. Oricum, mulțumesc pentru ajutor și sfaturi. Noroc!

robolist robolist
18 oct. 2013 20:37:30
1

vezi codul de mai jos. Adaugă instrucțiunea IF în interiorul funcției.

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

A funcționat perfect, deși eram sigur că am încercat această metodă înainte, evident că nu :) Mulțumesc mult.

robolist robolist
18 oct. 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' );

Acțiunea "wp_head" este declanșată în secțiunea "head" a paginii.

wp_enqueue_script() este folosit pentru încărcarea scripturilor, iar wp_enqueue_style() pentru încărcarea fișierelor CSS din Plugin. "WP_PLUGIN_URL." va prelua datele din folderul plugin-ului temei. "Test Plugin" este numele plugin-ului tău "pluginstyle.css" este fișierul CSS al plugin-ului. "jquery-min.js" este scriptul plugin-ului.

4 iul. 2016 14:00:29
Comentarii

Te rog explică cum răspunde, doar să arunci codul nu este un răspuns bun

bravokeyl bravokeyl
4 iul. 2016 14:04:40

nu este un cod aruncat pe care l-am folosit deja în pluginul meu. Ce dubii ai, întreabă-mă și voi clarifica în legătură cu acel cod.

Praveen Praveen
4 iul. 2016 14:08:13

ai încercat să folosești acel cod @bravokey

Praveen Praveen
4 iul. 2016 14:10:12

Nu am încercat, doar vă sugeram să adăugați o explicație în plus față de codul postat, care să arate cum răspunde la întrebarea inițială.

bravokeyl bravokeyl
4 iul. 2016 14:11:28

Mulțumesc pentru sugestie, de fapt sunt nou în asta @ bravokeyl

Praveen Praveen
4 iul. 2016 14:20:58

Vă rugăm să consultați [răspunsul]

fuxia fuxia
4 iul. 2016 15:04:36
Arată celelalte 1 comentarii