Comment ajouter du code à Header.php dans un thème enfant?

18

Je crée un thème enfant pour la première fois et j'avais quelques questions concernant le code ajouté à l'en-tête.

Dans un thème non enfant, il y a un certain code que j'ajoute à mon fichier header.php comme google analytics, google webmaster tools, buy sell ads, Facebook open graph, etc ....

Comment faites-vous cela dans un thème enfant? Créez-vous un fichier header.php dans votre thème enfant? Si oui, comment cela se fait-il? Est-ce le même que le @import que j'ai utilisé sur le CSS?

Merci.

Rick Smith
la source

Réponses:

24

J'accrochez à l' wp_headaction. Je placerais cela dans un plugin afin de l'abstraire de votre couche de présentation. Cela permet une évolutivité et un changement de thèmes. Cela empêche également tout dommage collatéral analytique si une étape est manquée dans la migration d'un thème au suivant.

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
}
Brian Fegter
la source
Merci. Je n'ai aucune expérience dans la création d'un plug-in. J'ai environ 5 morceaux de code que j'aimerais ajouter dans l'en-tête. Aurais-je besoin de faire un plug-in pour chacun d'eux?
Rick Smith
@RickSmith J'ai ajouté le format du plugin au post ci
Brian Fegter
4
Que vous utilisiez un thème parent, un thème enfant ou tout autre thème, la bonne approche consiste à mettre un tel code dans un rappel, connecté au crochet d'action approprié. Vous pouvez mettre ce code dans le functions.phpfichier du thème ou, encore mieux et comme Brian l'a suggéré, le mettre dans un plugin spécifique au site .
Chip Bennett
1
@BrianFegter Merci d'avoir pris le temps de m'aider. Voici un bac à pâte, je pense que je fais toujours quelque chose de mal. :) pastebin.com/iT0bJjGE
Rick Smith
4

Pour modifier l'en-tête d'un thème enfant, copiez le header.php du thème parent dans le thème enfant, puis modifiez-le. WordPress verra que vous avez un header.php dans votre thème enfant et l'utilisera à la place du theme parent header.php

Tous les fichiers de modèle que vous placez dans votre thème enfant auront priorité sur le même fichier dans le thème parent lorsqu'il est appelé par WordPress.

Tout ce qui va dans la balise doit être fait en utilisant quelque chose comme la fonction dans la réponse de Brians. S'il est spécifique au thème, vous pouvez le placer dans un fichier appelé functions.php dans votre dossier de thème sans étapes supplémentaires.

Tom J Nowell
la source
Tom, merci. Donc, si j'ai besoin d'installer 5 coupures de code différentes dans le header.php, puis-je créer un plugin et l'installer? Aurais-je encore besoin de copier le fichier header.php dans mon thème enfant?
Rick Smith
Oui, il n'y a aucune raison de faire 5 plugins
Tom J Nowell
@RickSmith Si vous faites l'abstraction d'un plugin, il n'y a aucune raison de copier sur header.php. :)
Brian Fegter
2
Le problème avec cette solution est que lorsque le thème est mis à jour, vous manquerez les correctifs dans header.php faits par l'auteur.
Knocks X
2

Merci à Brian Fegter . Si cette réponse vous aide, veuillez évaluer la réponse de Brian ici-haut.

Ceci est un exemple entièrement fonctionnel de la façon d'ajouter des choses à l '"en-tête" par son propre plugin. Dans ce cas, j'ajoute les propriétés de Facebook Open Graph pour les boutons Partager et J'aime.

Créez simplement un fichier PHP avec le nom spécifié dans "Plugin Script" au début de l'exemple de code, placez-le dans un dossier du même nom sans l'extension, évidemment, et copiez ce dossier vers la destination "/ wp-content / plugins ".

Ensuite, dans "Wordpress", actualisez "Plugins" et vous verrez votre nouveau plugin installé. Il suffit de l'activer et vos pages commenceront à contenir les métadonnées d'Open Graph Facebook et Twitter.

entrez la description de l'image ici

TRÈS IMPORTANT: Le fichier PHP doit être encodé en UTF-8 sans BOM, et ne doit avoir absolument aucun caractère à la fin. Doit assurer cela.

<?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
}
?>

Toute personne intéressée par la fonctionnalité du plugin.

  • Le titre sera la concaténation du nom de la page courante et du nom du site.

  • S'il existe un champ personnalisé appelé "metadescription", le plugin essaie de prendre la description de ce champ. Sinon, prenez la description de l'extrait.

  • Comme image, le plugin essaie d'utiliser la vignette de l'image sélectionnée sur la page.

DiegoSoto
la source
2
Veuillez utiliser esc_attr()pour le contenu de l'attribut HTML.
fuxia
J'ai modifié pour utiliser esc_attr () comme vous me l'avez dit. Je vous remercie.
DiegoSoto