Come aggiungere codice subito dopo il tag body aperto nel framework Genesis

23 lug 2012, 07:51:30
Visualizzazioni: 19.6K
Voti: 4

Dobbiamo aggiungere due frammenti di codice, uno subito dopo il tag body di apertura e l'altro subito prima del tag body di chiusura. Qual è il modo migliore per farlo? Ho esaminato wp_enqueue_script, ma sembra che il contenuto verrebbe inserito nella sezione head.

0
Tutte le risposte alla domanda 5
0
13

Hai mai aperto il file header.php e dato un'occhiata? Vedrai che genesis_before() viene chiamato subito dopo il tag di apertura <body> - segui il coniglio bianco e otterrai:

function genesis_before() { do_action('genesis_before'); }

E allo stesso modo per il footer. Quindi...

add_action( 'genesis_before', 'im_a_lazy_copy_paster' );
add_action( 'genesis_after',  'im_a_lazy_copy_paster' );

function im_a_lazy_copy_paster() {
    if ( current_filter() == 'genesis_before' )
        echo '<script>party.start();</script>';
    else
        echo '<script>if ( cops.called() ) party.split();</script>';
}
23 lug 2012 13:10:04
0

Puoi utilizzare un plugin come questo per visualizzare tutti gli hook di Genesis: http://wordpress.org/plugins/genesis-visual-hook-guide/. Questo ti permetterà di trovare rapidamente l'hook giusto da modificare per ottenere questo risultato. Poi modifica l'hook nel file functions. Puoi anche usare un plugin che ti consente di modificare facilmente gli hook tramite wp-admin: http://www.studiopress.com/plugins/simple-hooks

22 giu 2013 11:58:29
0

Eri sulla strada giusta. wp_enqueue_script accetta un parametro chiamato in_footer che definisce se il tuo script deve essere caricato prima del contenuto della pagina o alla fine del corpo della pagina.

$in_footer: (booleano) (opzionale) Normalmente gli script sono posizionati nella sezione <head>. Se questo parametro è true lo script viene posizionato in fondo al <body>. Questo richiede che il tema abbia l'hook wp_footer() nel punto appropriato. Nota che devi accodare il tuo script prima che wp_head venga eseguito, anche se sarà posizionato nel footer. Default: false

Ecco il riferimento sul codex: http://codex.wordpress.org/Function_Reference/wp_enqueue_script

23 lug 2012 10:28:59
1
  1. Dopo il tag di apertura del body.

    add_action( 'genesis_before', 'my_genesis_script' );
    
    function my_genesis_script() {
    
    if ( current_filter() == 'genesis_before' )
    
    echo '<script>parties.over();</script>';
    
    }
    

Hook Strutturali di Azione

genesis_before: Questo hook viene eseguito subito dopo il tag di apertura nel sorgente del documento.

  1. Prima del tag di chiusura del body:

Puoi aggiungere lo script in Genesis > Impostazioni Tema > Scripts Header e Footer e inserire lo script che vuoi venga restituito in wp_footer().

L'hook wp_footer() viene eseguito subito prima del tag di chiusura nel sorgente del documento.

13 set 2013 21:56:43
Commenti

Brad, per quanto ne so, puoi eliminare il controllo current_filter(). In questo caso, a meno che tu non abbia condizionali all'interno della tua funzione my_genesis_script(), verificare se il filtro è collegato all'hook a cui stai agganciando è superfluo all'interno della funzione.

Bryan Willis Bryan Willis
17 gen 2016 15:19:13
0

Un aggiornamento per GenesisWP 3.3.1

Vai su header.php

?>
</head>
<?php
genesis_markup(
    [
        'open'    => '<body %s>',
        'context' => 'body',
    ]
);

if ( function_exists( 'wp_body_open' ) ) {
    wp_body_open();
}

echo '<script>parties.over();</script>';

/**
 * Azione che viene eseguita immediatamente dopo l'hook `wp_body_open`.
 *
 * @since 1.0.0
 */
do_action( 'genesis_before' )
7 apr 2020 20:33:15