Como adicionar código ao Header.php em um tema filho?

18

Estou criando um tema filho pela primeira vez e tive algumas perguntas sobre o código adicionado ao cabeçalho.

Em um tema não filho, há um código que adiciono ao meu arquivo header.php, como o google analytics, as ferramentas do webmaster do google, os anúncios de compra e venda, o gráfico aberto do Facebook, etc.

Como você faz isso em um tema infantil? Você cria um arquivo header.php no seu tema filho? Se sim, como isso é feito? É o mesmo que o @import que eu usei no css?

Obrigado.

Rick Smith
fonte

Respostas:

24

Eu me conectaria à wp_headação. Eu colocaria isso em um plugin para abstraí-lo da sua camada de apresentação. Isso permite escalabilidade e alteração de temas. Isso também evita danos colaterais à análise se uma etapa for perdida na migração de um tema para o outro.

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
fonte
Obrigado. Não tenho experiência em criar um plug-in. Tenho cerca de cinco partes de código que gostaria de adicionar ao cabeçalho. Eu precisaria fazer um plug-in para cada um deles?
Rick Smith
@ RickSmith Adicionei o formato do plugin ao post acima #
Brian Fegter 27/02/2012
4
Seja usando um Tema pai, Tema filho ou qualquer tema, a abordagem correta é inserir esse código em um retorno de chamada, conectado ao gancho de ação apropriado. Você pode colocar esse código no functions.phparquivo do tema ou, melhor ainda, e como Brian sugeriu, colocá-lo em um plug-in específico do site .
Chip Bennett
1
@BrianFegter Obrigado por dedicar um tempo para me ajudar com isso. Aqui está uma lixeira, acho que ainda estou fazendo algo errado. :) pastebin.com/iT0bJjGE
Rick Smith
1
vamos continuar essa discussão no chat
Brian Fegter 27/02/2012
4

Para modificar o cabeçalho em um tema filho, copie o header.php do tema pai para o tema filho e modifique-o. O WordPress verá que você tem um header.php no tema filho e o usará em vez do tema pai header.php

Todos os arquivos de modelo que você colocar no seu tema filho terão prioridade sobre o mesmo arquivo no tema pai quando chamados pelo WordPress.

Tudo o que estiver na tag deve ser feito usando algo como a função da resposta Brians. Se for tema específico, você pode colocá-lo em um arquivo chamado functions.php na pasta do tema, sem nenhuma etapa extra.

Tom J Nowell
fonte
Tom, obrigado. Então, se eu precisar instalar 5 trechos de código diferentes no header.php, eu poderia criar um plugin e instalá-lo? Ainda precisaria copiar o arquivo header.php no meu tema filho?
Rick Smith
Sim, não há razão para criar 5 plugins
Tom J Nowell
@ RickSmith Se você está abstraindo para um plugin, não há razão para copiar sobre o header.php. :)
Brian Fegter 27/02/2012
2
O problema com esta solução é que, quando o tema for atualizado, você perderá as correções no header.php feitas pelo autor.
Bate X 24/02
2

Agradecimentos a Brian Fegter . Se esta resposta ajudar, avalie a resposta de Brian aqui acima.

Este é um exemplo totalmente funcional de como adicionar itens ao "cabeçalho" por seu próprio plug-in. Neste caso, estou adicionando as propriedades do Facebook Open Graph para os botões Compartilhar e Curtir.

Basta criar um arquivo PHP com o nome especificado em "Plugin Script" no início do código de amostra, coloque-o em uma pasta com o mesmo nome sem a extensão, obviamente, e copie esta pasta para o destino "/ wp-content / plugins ".

Em "Wordpress", atualize "Plugins" e você verá seu novo plugin instalado. Basta ativá-lo e suas páginas começarão a conter os metadados do Open Graph Facebook e Twitter.

insira a descrição da imagem aqui

MUITO IMPORTANTE: O arquivo PHP deve ser codificado em UTF-8 sem BOM e não deve ter absolutamente nenhum caractere no final. Deve garantir isso.

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

Qualquer pessoa interessada na funcionalidade do plug-in.

  • O título será a concatenação do nome da página atual e do nome do site.

  • Se existir um campo personalizado chamado "metadescription", o plug-in tenta obter a descrição desse campo. Caso contrário, pegue a descrição do trecho.

  • Como imagem, o plug-in tenta usar a miniatura da imagem em destaque na página.

DiegoSoto
fonte
2
Por favor, use esc_attr()para o conteúdo do atributo HTML.
fuxia
Eu modifiquei para usar esc_attr () como você me disse. Obrigado.
precisa saber é o seguinte