자식 테마에서 Header.php에 코드를 추가하는 방법은 무엇입니까?


18

처음으로 자식 테마를 만들고 있는데 헤더에 추가 된 코드에 대한 몇 가지 질문이 있습니다.

자식이 아닌 테마에는 Google Analytics, Google 웹 마스터 도구, 판매 광고, Facebook 오픈 그래프 등과 같은 header.php 파일에 추가하는 특정 코드가 있습니다.

자녀 테마에서 어떻게합니까? 자녀 테마에 header.php 파일을 만드십니까? 그렇다면 어떻게해야합니까? CSS에서 사용한 @import와 동일합니까?

감사.

답변:


24

나는 wp_head행동에 연결됩니다 . 프리젠 테이션 레이어에서 추상화하기 위해 플러그인에 배치합니다. 이를 통해 확장 성과 테마를 변경할 수 있습니다. 또한 한 테마에서 다음 테마로 마이그레이션 할 때 단계가 누락 된 경우 분석 자료의 손상을 방지합니다.

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
}

감사. 플러그인을 만든 경험이 없습니다. 헤더에 추가하려는 약 5 개의 코드가 있습니다. 각 플러그인을 연결해야합니까?
Rick Smith

나는 위의 게시물에 플러그인 형식을 추가 @RickSmith
브라이언 Fegter

4
부모 테마, 자식 테마 또는 테마를 사용하든, 올바른 접근 방식은 해당 코드를 콜백에 넣고 적절한 동작 후크에 연결하는 것입니다. 당신은 테마의에이 코드를 넣을 수있는 functions.php파일, 또는 더 나은 브라이언 제안했다대로에 넣어 사이트 별 플러그인 .
Chip Bennett

1
@BrianFegter 도와 주셔서 감사합니다. 여기에 페이스트 빈이 있는데, 여전히 잘못하고 있다고 생각합니다. :) pastebin.com/iT0bJjGE
Rick Smith


4

자식 테마에서 헤더를 수정하려면 부모 테마에서 header.php를 자식 테마로 복사 한 다음 수정하십시오. 워드 프레스에는 자식 테마에 header.php가 있고 부모 테마 header.php 대신 사용합니다.

하위 테마에 넣은 템플릿 파일은 WordPress에서 호출 할 때 상위 테마의 동일한 파일보다 우선합니다.

태그에 들어가는 것은 Brians의 함수와 같은 것을 사용하여 수행해야합니다. 테마에 따라 다르면 추가 단계없이 테마 폴더의 functions.php 파일에 넣을 수 있습니다.


톰 고마워 만약 header.php에 5 개의 다른 코드 조각을 설치해야한다면 하나의 플러그인을 만들어 설치할 수 있습니까? 여전히 header.php 파일을 자식 테마로 복사해야합니까?
Rick Smith

네, 5 개의 플러그인을 만들 필요가 없습니다
Tom J Nowell

@RickSmith 플러그인으로 추상화하는 경우 header.php를 복사 할 이유가 없습니다. :)
Brian Fegter

2
이 솔루션의 문제점은 테마가 업데이트되면 작성자가 만든 header.php의 수정 사항을 놓칠 수 있다는 것입니다.
Knocks X

2

Brian Fegter 에게 감사합니다 . 이 답변이 도움이된다면, 바로 위 의 Brian의 답변을 평가 해주세요 .

이것은 자체 플러그인으로 "헤더"에 항목을 추가하는 방법에 대한 완전한 기능의 예입니다. 이 경우 공유 및 좋아요 버튼에 Facebook Open Graph의 속성을 추가하고 있습니다.

샘플 코드의 시작 부분에 "Plugin Script"에 지정된 이름으로 PHP 파일을 생성하고 확장자가없는 동일한 이름의 폴더에 배치 한 다음이 폴더를 대상에 복사하십시오. "/ wp-content / 플러그인 "

그런 다음 "Wordpress"내에서 "Plugins"를 새로 고치면 새 플러그인이 설치됩니다. 활성화하면 페이지에 Open Graph Facebook 및 Twitter의 메타 데이터가 포함됩니다.

여기에 이미지 설명을 입력하십시오

매우 중요 : PHP 파일은 BOM없이 UTF-8로 인코딩되어야하며 끝에 문자가 없어야합니다. 이것을 확인해야합니다.

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

플러그인의 기능에 관심이있는 사람

  • 제목은 현재 페이지 이름과 사이트 이름을 연결 한 것입니다.

  • "metadescription"이라는 사용자 정의 필드가 존재하면 플러그인은이 필드에서 설명을 가져 오려고 시도합니다. 그렇지 않으면 발췌 부분에서 설명을 가져옵니다.

  • 이미지로서 플러그인은 페이지에서 추천 이미지의 썸네일을 사용하려고합니다.


2
esc_attr()HTML 속성 내용에 사용하십시오 .
fuxia

내가 말한대로 esc_attr ()을 사용하도록 수정했습니다. 감사합니다.
DiegoSoto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.