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


18

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

子以外のテーマには、Googleアナリティクス、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つほどあります。それぞれにプラグインを作成する必要がありますか?
リック・スミス

@RickSmith上記の投稿にプラグイン形式を追加しました
ブライアンフェガー

4
親テーマ、子テーマ、またはその他のテーマを使用するかどうかにかかわらず、正しいアプローチは、適切なアクションフックにフックされたコールバックにそのようなコードを配置することです。このコードをテーマのfunctions.phpファイルに入れるか、さらに良いことに、ブライアンが提案しようにサイト固有のプラグインに入れます。
チップベネット

1
@BrianFegterこれを手伝ってくれてありがとう。ここにペーストビンがあります。私はまだ何か間違ったことをしていると思います。:) pastebin.com/iT0bJjGE
リックスミス


4

子テーマのヘッダーを変更するには、親テーマからheader.phpを子テーマにコピーしてから変更します。WordPressは、子テーマにheader.phpがあることを確認し、親テーマheader.phpの代わりにそれを使用します

WordPressから呼び出された場合、子テーマに配置したテンプレートファイルは、親テーマの同じファイルよりも優先されます。

タグに含まれる内容はすべて、Brians answerの関数などを使用して実行する必要があります。テーマ固有の場合は、追加の手順を行わなくても、テーマフォルダーのfunctions.phpというファイルに配置できます。


トム、ありがとう。したがって、header.phpに5つの異なるコードスニペットをインストールする必要がある場合、1つのプラグインを作成してインストールできますか?header.phpファイルを子テーマにコピーする必要がありますか?
リック・スミス

はい、5つのプラグインを作成する理由はありません
トムJノウェル

@RickSmithプラグインに抽象化する場合、header.phpをコピーする理由はありません。:)
ブライアンフェクター

2
このソリューションの問題は、テーマが更新されると、作成者が作成したheader.phpの修正を見逃すことです。
ノックX

2

Brian Fegterに感謝します。この回答が役立つ場合は、上記のブライアンの回答を評価してください。

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

サンプルコードの冒頭にある「プラグインスクリプト」で指定された名前のPHPファイルを作成し、拡張子のない同じ名前のフォルダーに配置し、このフォルダーを宛先「/ wp-content /プラグイン」。

次に、「Wordpress」内で「プラグイン」を更新すると、新しいプラグインがインストールされていることがわかります。有効化するだけで、ページに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.