• 締切済み
  • 困ってます

WordPressのheader.phpの使い方

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

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数123
  • ありがとう数2

みんなの回答

  • 回答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/

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

質問者からの補足

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

関連するQ&A

  • ワードプレスでheader.phpをいじったら

    ワードプレスでブログを書いています。 サーバーはロリポップ、テーマはcocoonで、まだワードプレス歴は浅い初心者です。 この度Googleタグマネージャの設定をしようと思い、ネットで調べたとおりに外観→テーマの編集に行き、cooonの親テーマのheader.phpの<head>...</head>のところと<body>のところにタグマネージャのコードを貼り付けて「ファイルを更新」したところ、エラーが表示されてうまく更新できませんでした。 その後、ブログを更新表示してみたところ、記事そのものはすべて残っているのですが、レイアウトが崩れており、タイトルやヘッダー画像や色設定やカラムのレイアウトその他もろもろが消えて、テキストのみのなんとも味気ない表示になっていました… そこでもう一度「テーマの編集」より親テーマのhead.phpを見てみたところ、たったの一文字も残っておらず、きれいさっぱり消えてしまっていました。 焦ってネットで調べてみたところ、初心者が安易に親テーマファイルを編集するのは危険なことだと知りましたが後の祭りで、知らずにいじってしまったことを反省しております。 構築途中のブログで、バックアップを取ることもしてありませんでした。 幸い記事そのものは残っているのが不幸中の幸いですが、ここからどのようにリカバーしていけばよいでしょうか。よろしくお願いします。

    • ベストアンサー
    • PHP
  • Wordpressで特定ページのheader変える

    いつもお世話になっています。 今回は特定のページのみheader.phpを変えたいのですがどうすればいいでしょうか??header.phpを二つ作るはわかったのですが、そこからがわからないです。 single.phpとpage.phpを変えるだけでしたら、それぞれの読み込むheader.phpを変えれば終わりの話なのですが同じページ内の場合どうすればいいでしょうか・・・? 宜しくお願いします。

    • ベストアンサー
    • CSS
  • PHP header関数が使えない

    OS:Linux PHP、Postgres のシステム環境です。 現在PHPのheader()関数が動いてくれません。 (リダイレクトできない。) <HTML> <HEAD><TITLE>aaaa</TITLE></HEAD> <BODY> <?php header('Location: http://aaa.com/'); ?> </BODY> </HTML> こんな風にHTMLタグなにか出力した後にheader関数を呼び出すとエラーになり、headerのコールはすべての出力の前に行うこととサイトで調べてみまして分かったのですが。 あるシステムではHTMLタグの中に入れてもheader関数は問題なく動いています。 php.iniの設定なのでしょうか、それともプログラムの記述方法で回避できるのでしょうか? このおかげで膨大な修正が必要になりました。 回避策はございますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Wordpressのpage.phpについて

    初めまして。 既にあるサイトをWordpressに移行しようと考えております。 色々調べ、固定ページ(小さな店のサイトの為ほとんどが固定ページです)は、page.php(もしくはpage.phpを基にしたabout.php等)で設定するという事はわかったのですが。 page.phpの内容は、極端に言えば <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php the_content('<p class="serif">Read the rest of this page &amp;raquo;</p>'); ?> <?php endwhile; endif; ?> だけ書いておき、あとはページ作成の時に、現在あるhtmlタグを貼り付けるだけ という感じで問題ないのでしょうか? (もちろん、画像パスは書き換えるとして) Wordpressに関しては初心者の為わからない事だらけですので、詳しい方ご教授ください。

    • 締切済み
    • PHP
  • wordpress lightningテーマ

    初心者ですが、HPを作成しています。 wordpressのlightningテーマを使用していますが、ページ送りを思うようにつけられなくて ネットを見ながらファイルを書き換えたりしていたら、個別投稿ページが真っ白になってしまいました。 もともとページ送りはsingle phpに追加するという記事を見たのですが、single phpが真っ白で 代わりにpage phpをいじってしまい、思い通りにならずsingle phpをカスタマイズしようと思ったのですが、その辺りからもともと表示されていた記事が消えてしまい、lightningのもともとのフォーマットのテキストがわからないため、見よう見まねで書き込んでも、べたうちのような画面にしかなりません。 lightningのsingle phpのテンプレートをどこかでコピペすることは可能でしょうか?

    • 締切済み
    • PHP
  • ワードプレス 全てindex.htmlになる

    ワードプレスの本を参考にホームページを作っています。 themesフォルダに自作テーマのためのフォルダを作り、index.php、cssファイル、header,footer.phpを作り、固定ページのためのpageファイルを作りました。 ダッシュボードから記事内容を記入して、パーマリンクを設定してアクセスしましたが、 localhost/wordpress (wordpressはアプリ名です)でアクセスしても、パーマリンクをbusinessとして追加した固定ページもすべて、アプリ名wordpressフォルダ直下のindex.phpの内容を表示しているようです。 ルーティングについて調べましたが、見当違いなことを調べてるのでしょうか?あまり解決につながる情報が見当たりません。 初歩的な質問で恐縮ですがよろしくお願いします。

    • ベストアンサー
    • PHP
  • 【PHP?】header("location : ・・・")が作動しな

    【PHP?】header("location : ・・・")が作動しない PHPに関して質問させていただきます。 -------------------------------------------- <html> <head> <title></title> </head> <body> <?php if($_POST['pay'] == credit) { header("Location : creditinfo.php"); } else { print("ただいま制作中です\n"); } ?> </body> </html> -------------------------------------------- というコーディングを行い、 ・前ページでのpostで[credit]というデータが返ってくると別ページへ移動 ・それ以外のデータが帰ってきたら「ただいま制作中です」というテキストを表示 ということを行いたいのですが、 それを実行すると Warning: Cannot modify header information - headers already sent by (output started at C:・・・.php:6) in C:・・・.php on line 8 というエラーが返ってきてしまい、そのページから先に進めなくなってしまいます。 様々なページで解決方法を探りましたが、解決できずにいます。 ちなみに、elseの方の「ただいま制作中です」は表示できます。 どなたかご教授をお願いします。

    • ベストアンサー
    • PHP
  • wordpressのエラーについて

    wordpressのエラーについて 今、本を見ながらテーマをスクラッチから作ろうとしているのですが、 個別ページ(single.php)で、 <?php the_title();?> と書くところを <?php the_title;?> と書いても、タイトルは表示されないものの、PHPのエラーがでません。 なぜでしょうか? なお、XAMPPでやっていてphpの設定はいじってないので、 <?phppppp ?>とかかくとphpのシンタックスエラーが表示されます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • wordpressでのページの作成

    wordpressでのページの作成についてお伺いいたします。 どなたかお分かりになりましたら、 ご回答のほどよろしくお願いいたします。 ※質問内容に不備がありましたら、追記いたしますので お知らせいただけましたら幸いです。 新しくページを作成するところまでは完了いたしましたが、 TOPページにおいて、作成したページへ移行するボタンを クリックしてもページが存在しない状態です。 原因を調べたところ、 選択したテーマに、ページ(page.phpなど)が存在していない。 というのがありましたが、確認したところ問題ないようでした。 また、ページが存在するテーマを選択後、 何かpage.phpなどにおいて設定が必要になるのでしょうか。 ご回答・参考資料など教えていただけたら嬉しいです。 その他、難しい設定がいらず、簡単にはじめられる (ページが作成できる)テーマがありましたら、 教えていただければと思います。 どうぞよろしくお願いいたします。 ■選択したテーマ http://www.wordpresstheme.jp/prebuilt

  • htmlをwordpress同様にまとめられないか

    wordpressでheader.php やfooter.phpのように通常のhtmlのウェブサイトを構築する際に各共通部分をCMS等を使わない通常のウェブサイト作成の際にまとめることはできませんか。 もちろん、これはwordpressのインクルードタグであることは承知ですが、要するに共通部分をphp等でまとめることはできないのでしょうか。 一つにまとめられるものであれば何でも構いません。 dreamweaverで編集しており、dreamweaverの機能も承知ですが、毎回更新する際に読み込むのに非常に時間がかかるため、他の方法を探しております。 ページ50ページ近くあり、共通部分を毎回手直ししてるのでかなり時間がとられます。 初心者なのですが、よろしくお願いします。

    • ベストアンサー
    • PHP