• 締切済み

WordPressのheader.phpの使い方

WordPressでオリジナルテーマを作成しています。 <head>タグ内の記載をページごとに少しだけ変更したいのですが、その場合、header.phpでは</head>を使わない、すなわち閉じないで、front-page.phpやsingle.phpの上部にそれぞれのページに固有の記述をした後に、そのfront-page.phpやsingle.php内でheadタグを閉じてもいいものなのでしょうか?この方法で何か文法違反とかその他不都合な点は生じますでしょうか?

みんなの回答

回答No.1

閉じてもいいかどうかでいえば、閉じても大丈夫です。ちゃんと動きます。 ただし注意しなければいけないのは、タグの閉じ忘れや重複が発生しやすいということです。たとえば《front-page.php》には</head>タグを書いたのに、《single.php》には</head>タグを書き忘れてしまった……。別々の場所に</head>タグを書くと、こうしたミスが起きやすいです。 ◆小さな会社のWordPressサイト制作・運営ガイド[オリジナルテーマ作成編] - 田中勇輔 - Google ブックス  https://books.google.co.jp/books?id=UHwSAgAAQBAJ&pg=PA43&lpg=PA43&dq=%E3%81%A9%E3%81%93%E3%81%BE%E3%81%A7%E3%80%80header.php&source=bl&ots=U-Py1DuSZd&sig=Nwj_zqqX2_rfnEtRF3IA3qw0CMk&hl=ja&sa=X&ved=0ahUKEwjnsL2D8N7aAhVGG5QKHcg4DrAQ6AEIVTAG#v=onepage&q=%E3%81%A9%E3%81%93%E3%81%BE%E3%81%A7%E3%80%80header.php&f=false オリジナルテーマに挑戦しようとするとWordPressはすごく難しくて、私もいろいろと試しては失敗をくり返してきました。その経験上、<head>タグの内容は《header.php》にまとめたほうがわかりやすいのではないかと、いまのところはそう思っています。 ちょっと難しくなりますが、《条件分岐》という技を使いこなせるようになると、《header.php》だけでもページごとに<head>タグの内容を変えられます。たとえばこんなふうに書くと、《front-page.php》では《front.css》を読んで、《single.php》では《single.css》を読み込むようになります。 <head> <?php if( is_front_page() ): // もしfront-page.phpだったら ?> <link rel="stylesheet" href="https://example.com/front.css" media="all" /> <?php endif; // front.cssを読み込む ?> <?php if( is_single() ): // もしsingle.phpだったら ?> <link rel="stylesheet" href="https://example.com/single.css" media="all" /> <?php endif; // single.cssを読み込む ?> </head>

参考URL:
http://takayakondo.com/wordpress-if/
milano-com
質問者

お礼

とてもご丁寧な回答ありがとうございます。 header.php のポリシーが気になり、動きはするものの推奨されてない方法だとしたら・・・という思いがありました。ただ、もし単なるテンプレートして便宜的に名称をつけている程度の物でしたら、極端な話、footer.php をheadタグの為に使ってもいいのか、なんていう疑問までわきました(そういう事は実際にはしませんが^^) 実は、今回の質問は、構造化データをページ毎に振り分けたいという所からのものです。<script type="application/ld+json"> で記述するコードで、Googleへより正確な情報を提供し、条件次第ではリッチスニペットも表示できるという事ですので。 構造化データはhtmlのどこに記述してもかまわないということなのですが、可能ならページ毎にheadタグ内に出したい、でも<script type="application/ld+json">を条件分岐させる方法がわかりませんで、最終的にheader.php内でheadタグの閉じタグを書かないという方法しか思いつきませんでした。もし良い方法が何か有りましたら教えて下さい。

milano-com
質問者

補足

お礼コメントの続きですが、<script type="application/ld+json">内の記述はページによって多種多様ですので、構造化データの中身は自身で記述し、それをそのままページ毎にechoのような感じで吐き出せる方法はないものか、と考えたりします。(ただ、記事投稿各ページについては別途やり方を変えなければならないかもですが)

関連するQ&A