web-dev-qa-db-ja.com

子テーマのHeader.phpにコードを追加する方法?

私は初めて子テーマを作成していますが、ヘッダーに追加されたコードに関していくつか質問がありました。

子供向けではないテーマでは、Googleアナリティクス、Googleウェブマスターツール、セル売り広告、Facebook Open Graphなど、私のheader.phpファイルに追加する特定のコードがあります。

あなたは子供のテーマでどのようにこれをしますか?あなたはあなたの子供のテーマでheader.phpファイルを作成しますか?もしそうなら、これはどのように行われますか? CSSで使用した@importと同じですか?

ありがとう。

15
Rick Smith

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
}
18
Brian Fegter

子テーマのヘッダを変更するには、header.phpを親テーマから子テーマにコピーしてから変更します。 WordPressはあなたがあなたの子供のテーマにheader.phpを持っていることを見てそして親のテーマheader.phpの代わりにそれを使う

あなたがあなたの子供のテーマに入れたどんなテンプレートファイルも、WordPressによって呼ばれるとき、親のテーマの同じファイルよりも優先されます。

タグに含まれるものはすべて、Brians answerの関数のようなものを使用して実行する必要があります。テーマ固有のものであれば、特別な手順なしでテーマフォルダのfunctions.phpというファイルに入れることができます。

4
Tom J Nowell

おかげで Brian Fegter 。この答えが助けになるなら、 Brian's answer の評価をつけてください。

これは、独自のプラグインによって "ヘッダー"に物事を追加する方法の完全に機能的な例です。この場合は、共有ボタンと類似ボタンにFacebook Open Graphのプロパティを追加します。

サンプルコードの冒頭の "Plugin Script"で指定された名前のPHPファイルを作成し、拡張子を付けずに同じ名前のフォルダーに配置して、このフォルダーを目的の場所にコピーするだけです。 "/ wp-content/plugins".

それから「Wordpress」内で「Plugins」をリフレッシュするとあなたの新しいプラグインがインストールされているのがわかるでしょう。それをアクティブにするだけで、あなたのページはOpen GraphのFacebookやTwitterのメタデータを含み始めます。

enter image description here

非常に重要: 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: https://wordpress.stackexchange.com/questions/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
DiegoSoto