Come aggiungere codice a Header.php in un tema figlio?


18

Sto creando un tema figlio per la prima volta e ho avuto alcune domande sul codice aggiunto all'intestazione.

In un tema non secondario c'è un certo codice che aggiungo al mio file header.php come google analytics, strumenti per i webmaster di google, comprare annunci di vendita, grafico aperto di Facebook, ecc ....

Come si fa in un tema figlio? Crei un file header.php nel tuo tema figlio? In tal caso, come si fa? È lo stesso di @import che ho usato sul CSS?

Grazie.

Risposte:


24

Vorrei agganciarmi wp_headall'azione. Vorrei inserirlo in un plug-in in modo da estrarlo dal livello di presentazione. Ciò consente scalabilità e modifica dei temi. Ciò previene anche eventuali danni collaterali dell'analitica in caso di mancato passaggio di un passaggio da un tema a quello successivo.

add_action('wp_head', 'wpse_43672_wp_head');
function wpse_43672_wp_head(){
    //Close PHP tags 
    ?>
    ADD YOUR PLAIN HTML CODE HERE
    <?php //Open PHP tags
}

Grazie. Non ho alcuna esperienza nella creazione di un plug-in. Ho circa 5 pezzi di codice che vorrei aggiungere nell'intestazione. Dovrei creare un plug-in per ognuno di essi?
Rick Smith,

@RickSmith Ho aggiunto il formato del plugin al post sopra
Brian Fegter,

4
Che si tratti di utilizzare un tema principale, un tema secondario o qualsiasi altro tema, l' approccio corretto consiste nel mettere tale codice in un callback, agganciato al gancio di azione appropriato. Puoi inserire questo codice nel functions.phpfile del tema o, ancora meglio e come ha suggerito Brian, inserirlo in un plug-in specifico per il sito .
Chip Bennett,

1
@BrianFegter Grazie per avermi dedicato del tempo per aiutarmi in questo. Ecco un cestino, penso che sto ancora facendo qualcosa di sbagliato. :) pastebin.com/iT0bJjGE
Rick Smith,


4

Per modificare l'intestazione in un tema figlio, copia header.php dal tema principale nel tema figlio e quindi modificalo. WordPress vedrà che hai un header.php nel tuo tema figlio e usalo al posto del tema genitore header.php

Qualsiasi file modello inserito nel tema figlio avrà la priorità sullo stesso file nel tema principale quando viene chiamato da WordPress.

Tutto ciò che va nel tag dovrebbe essere fatto usando qualcosa come la funzione nella risposta di Brians. Se è specifico del tema, puoi inserirlo in un file chiamato Functions.php nella cartella del tuo tema senza ulteriori passaggi.


Tom, grazie. Quindi, se devo installare 5 diversi frammenti di codice in header.php, potrei semplicemente creare un plugin e installarlo? Avrei ancora bisogno di copiare il file header.php nel mio tema figlio?
Rick Smith,

Sì, non c'è motivo di creare 5 plugin
Tom J Nowell

@RickSmith Se stai eseguendo l'astrazione su un plugin, non c'è motivo di copiare su header.php. :)
Brian Fegter,

2
Il problema con questa soluzione è che quando il tema viene aggiornato, ti perderai le correzioni in header.php fatte dall'autore.
Bussa X

2

Grazie a Brian Fegter . Se questa risposta aiuta, si prega di valutare la risposta di Brian proprio qui sopra.

Questo è un esempio perfettamente funzionante di come aggiungere elementi all'intestazione dal proprio plugin. In questo caso, sto aggiungendo le proprietà di Facebook Open Graph per i pulsanti Condividi e Mi piace.

Basta creare un file PHP con il nome specificato in "Plugin Script" all'inizio del codice di esempio, posizionarlo in una cartella con lo stesso nome senza estensione, ovviamente, e copiare questa cartella nella destinazione "/ wp-content / plugins".

Quindi in "Wordpress", aggiorna "Plugin" e vedrai il tuo nuovo plugin installato. Basta attivarlo e le tue pagine inizieranno a contenere i metadati di Open Graph Facebook e Twitter.

inserisci qui la descrizione dell'immagine

MOLTO IMPORTANTE: il file PHP deve essere codificato in UTF-8 senza distinta base e non deve assolutamente contenere caratteri alla fine. Deve garantire questo.

<?php
/*
    Plugin Name: My Facebook Open Graph Protocol
    Plugin Script: my-facebook-open-graph-protocol.php
    Plugin URI: 
    Description: Add Facebook Open Graph Protocol to header
    Author: Diego Soto (Thanks to Brian Fegter)
    Donate Link: 
    License: GPL    
    Version: 0.1-alpha
    Author URI: /wordpress/43672/how-to-add-code-to-header-php-in-a-child-theme
    Text Domain: myfogp
    Domain Path: languages/
*/

/*  Copyright 2014 Diego Soto  (http://disientoconusted.blogspot.com.ar/)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as
    published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

add_action('wp_head', 'wpse_43672_wp_head');

function wpse_43672_wp_head(){
    $title = get_the_title() ." &lsaquo; ". get_bloginfo( "name", "display" );

    $src = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), array( 90,55 ), false, "" ); 

    $face_metad = get_post_meta(get_the_ID(), "metadescription", true);

    $twitter_metad = get_post_meta(get_the_ID(), "metadescription140", true);
    if (empty($twitter_metad)) 
        $twitter_metad = $face_metad;

    //Close PHP tags 
    ?>    
    <meta property="og:title" content="<?php echo esc_attr($title); ?>" />
    <meta property="og:image" content="<?php echo esc_attr($src[0]); ?>" />
    <meta property="og:url" content="<?php the_permalink(); ?>" />
    <meta property="og:description" content="<?php if (!empty($face_metad)) echo esc_attr($face_metad); else the_excerpt(); ?>" />

    <meta name="twitter:title" content="<?php echo esc_attr($title); ?>" />
    <meta name="twitter:image" content="<?php echo esc_attr($src[0]); ?>" />    
    <meta name="twitter:url" content="<?php the_permalink(); ?>" />
    <meta name="twitter:description" content="<?php if (!empty($twitter_metad)) echo esc_attr($twitter_metad); else the_excerpt(); ?>" />
    <?php //Open PHP tags
}
?>

Chiunque sia interessato alla funzionalità del plugin.

  • Il titolo sarà la concatenazione del nome della pagina corrente e del nome del sito.

  • Se esiste un campo personalizzato chiamato "metadescription", il plugin tenta di prendere la descrizione da questo campo. Altrimenti, prendi la descrizione dall'estratto.

  • Come immagine, il plug-in tenta di utilizzare la miniatura dell'immagine in primo piano nella pagina.


2
Si prega di utilizzare esc_attr()per il contenuto dell'attributo HTML.
fuxia

Ho modificato per usare esc_attr () come mi hai detto. Grazie.
Diego,
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.