<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>テーマ  |  takeHo（たけほ）のへなちょこ台帳</title>
	<atom:link href="https://blog.takeho.com/tag/%E3%83%86%E3%83%BC%E3%83%9E/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.takeho.com</link>
	<description>いわゆる自由帳ってところです。</description>
	<lastBuildDate>Mon, 17 Mar 2025 12:40:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6</generator>

<image>
	<url>https://blog.takeho.com/wp-content/uploads/2024/08/icon-150x150.png</url>
	<title>テーマ  |  takeHo（たけほ）のへなちょこ台帳</title>
	<link>https://blog.takeho.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>オリジナルテーマを初めて作る人のための完全ガイド ～基礎から学ぶ制作フロー＆サンプル付き～</title>
		<link>https://blog.takeho.com/startup-wordpress/</link>
					<comments>https://blog.takeho.com/startup-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[たけほ]]></dc:creator>
		<pubDate>Sat, 15 Mar 2025 12:36:31 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[テーマ]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.takeho.com/?p=752</guid>

					<description><![CDATA[WordPress で初めてオリジナルテーマを作ろうと思ったとき、まず参考にしたくなるのが公式のデフォルトテーマではないでしょうか。しかし、最近のデフォルトテーマは機能が豊富で、その分構造も複雑になっています。 そこで今 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>WordPress で初めてオリジナルテーマを作ろうと思ったとき、まず参考にしたくなるのが公式のデフォルトテーマではないでしょうか。しかし、最近のデフォルトテーマは機能が豊富で、その分構造も複雑になっています。</p>



<p>そこで今回は、オリジナルテーマを初めて作成する方向けに、シンプルなテーマをベースに制作の流れをまとめました。サンプルも用意しているので、ぜひダウンロードして活用してください。</p>



<p>WordPress はバージョンアップを重ね、現在では 6.7 になっています。それに伴い、デフォルトのテーマも新たに TwentyTwelve へと変更されました（2013年1月）。オリジナルテーマを初めて作成しようと考えたとき、まず参考にしたくなるのがデフォルトテーマ。しかし、最近のデフォルトテーマは構造が複雑で、少しとっつきにくいと感じることもあるかもしれません。</p>



<p>私が WordPress を始めた頃のデフォルトテーマは、その名の通り「Default」というシンプルなものでした（現在は更新が停止）。当時は WordPress について深く理解していなくても、このテーマを参考にしながらオリジナルテーマを作成できたと感じています。</p>



<p>そこで今回は、WordPress で初めてオリジナルテーマを作る方向けに、シンプルなテーマを用いて作成の流れをまとめました。テーマ自体は、WordPress の基本となるブログ向けのものを採用しています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HTML + CSS で、サイトのレイアウトを設計しよう</a><ol><ol><ol><li><a href="#toc2" tabindex="0">デザインに入れておきたいもの</a></li></ol></li><li><a href="#toc3" tabindex="0">トップページのデザイン</a></li><li><a href="#toc4" tabindex="0">記事ページのデザイン</a></li><li><a href="#toc5" tabindex="0">固定ページのデザイン</a></li></ol></li></ol></li><li><a href="#toc6" tabindex="0">作成したデザインを WordPress のテーマファイルに変換</a><ol><li><a href="#toc7" tabindex="0">WordPress の Themes フォルダに移してみよう！</a></li><li><a href="#toc8" tabindex="0">&nbsp;テーマを有効化して、サイトを確認してみよう！</a></li><li><a href="#toc9" tabindex="0">WordPress のテンプレートタグ</a></li></ol></li><li><a href="#toc10" tabindex="0">WordPress の構造に合わせてテンプレートを分割しよう</a><ol><li><a href="#toc11" tabindex="0">ヘッダー部分を分割</a></li><li><a href="#toc12" tabindex="0">サイドバー部分を分割</a></li><li><a href="#toc13" tabindex="0">&nbsp;フッター部分を分割しよう</a></li><li><a href="#toc14" tabindex="0">WordPress のテンプレートファイルいろいろ</a><ol><ol><li><a href="#toc15" tabindex="0">ここまでのまとめ</a></li></ol></li></ol></li></ol></li><li><a href="#toc16" tabindex="0">header.php をカスタマイズしてヘッダーを整える</a><ol><li><a href="#toc17" tabindex="0">サイト名と紹介文の部分</a></li><li><a href="#toc18" tabindex="0">検索フォーム</a></li><li><a href="#toc19" tabindex="0"> ナビゲーション部分</a></li><li><a href="#toc20" tabindex="0">&lt;head>内を作ろう！</a><ol><ol><ol><li><a href="#toc21" tabindex="0">ページのタイトル | サイト名</a></li></ol></li></ol></li></ol></li><li><a href="#toc22" tabindex="0">&lt;head> 内に書いておきたい大事なもの</a><ol><ol><li><a href="#toc23" tabindex="0">header.php のまとめ</a></li></ol></li></ol></li></ol></li><li><a href="#toc24" tabindex="0">メインのコンテンツを管理する index.php を調整</a><ol><li><a href="#toc25" tabindex="0">WordPress ループ</a></li><li><a href="#toc26" tabindex="0">ちょっと寄り道 – 日付を表示する the_date</a></li><li><a href="#toc27" tabindex="0">記事を投稿して表示を確認</a></li><li><a href="#toc28" tabindex="0">ちょっと寄り道 – WordPress が自動で付けてくれるクラス</a><ol><li><a href="#toc29" tabindex="0">画像につくクラス</a></li></ol></li><li><a href="#toc30" tabindex="0">次のページ、前のページへのページャーを付けよう！</a><ol><ol><li><a href="#toc31" tabindex="0">Attention</a></li><li><a href="#toc32" tabindex="0">index.php のポイント</a></li></ol></li></ol></li></ol></li><li><a href="#toc33" tabindex="0">サイトのフッターを footer.php でデザインしよう</a><ol><li><a href="#toc34" tabindex="0">忘れちゃいけない wp_footer</a><ol><ol><li><a href="#toc35" tabindex="0">footer.php のまとめ</a></li></ol></li></ol></li></ol></li><li><a href="#toc36" tabindex="0">記事ごとの表示レイアウトを管理する single.php を作成</a><ol><li><a href="#toc37" tabindex="0">single.phpを作ってヘッダーなどを読み込む</a></li><li><a href="#toc38" tabindex="0">WordPress ループを書き込む</a></li><li><a href="#toc39" tabindex="0"> タグと投稿者などを表示する</a></li><li><a href="#toc40" tabindex="0">前の記事、次の記事へのリンクを表示する</a></li></ol></li><li><a href="#toc41" tabindex="0">コメント機能を追加し、ユーザーの声を反映しよう</a><ol><li><a href="#toc42" tabindex="0">コメント一覧の表示</a><ol><li><a href="#toc43" tabindex="0">comments.php を作る</a></li></ol></li><li><a href="#toc44" tabindex="0">コメントフォームを表示しよう！</a><ol><li><a href="#toc45" tabindex="0">ディスカッション設定</a></li></ol></li><li><a href="#toc46" tabindex="0">コメントフォームを移動させる comment-reply.js</a></li></ol></li><li><a href="#toc47" tabindex="0">固定ページ専用の page.php を作成し、個別ページを整理</a><ol><ol><ol><li><a href="#toc48" tabindex="0">page.php のまとめ</a></li></ol></li></ol></li></ol></li><li><a href="#toc49" tabindex="0">カスタムメニューを導入し、柔軟なナビゲーションを実現</a><ol><ol><ol><li><a href="#toc50" tabindex="0">作成したテンプレートファイル</a></li></ol></li></ol></li></ol></li><li><a href="#toc51" tabindex="0">仕上げに Theme Check プラグインで最終確認</a><ol><ol><ol><li><a href="#toc52" tabindex="0">Attention</a></li></ol></li></ol></li><li><a href="#toc53" tabindex="0">必須: コンテンツ幅が設定されていません。</a></li><li><a href="#toc54" tabindex="0">必須: このテーマにはコメントページネーションのコードがありません。</a></li><li><a href="#toc55" tabindex="0">必須: wp_link_pages が見つかりませんでした。</a></li><li><a href="#toc56" tabindex="0">必須: language_attributes が見つかりませんでした。</a></li><li><a href="#toc57" tabindex="0">必須: body_class call in body tag が見つかりませんでした。</a></li><li><a href="#toc58" tabindex="0">必須:add_theme_support( ‘automatic-feed-links’ ) が見つかりませんでした。</a></li></ol></li><li><a href="#toc59" tabindex="0">最後に …</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">HTML + CSS で、サイトのレイアウトを設計しよう</span></h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="588" height="393" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_02_samplesite.png" alt="" class="wp-image-755"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>まずは WordPress のことは置いておいて、<em><abbr title="Hypertext Markup Language">HTML</abbr>&nbsp;+&nbsp;<abbr title="Cascading Style Sheets">CSS</abbr></em>&nbsp;だけで Webサイトのデザインを作っていきます。慣れてくると HTML + CSS + WordPress の作業をいっぺんにやることも多いですけど、初めてのときは WordPress のページの構造を理解するためにも、まずはおおまかでいいので、HTML + CSS でデザインを完成させておくといいと思います。</p>
</div>
</div>



<p>純粋な HTML + CSS の Webサイトを基準にしておけば、WordPress ではどこを変更する必要があるのか … ということが分かりやすくなると思うので、初めてのときはこの方法がいいんじゃないかな？と思います。</p>



<p>今回は下記の 3ページを、まずは HTML + CSS で作ってみました。</p>



<p></p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">HTML + CSS サンプル</span></div><div class="caption-box-content block-box-content box-content">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<ul class="wp-block-list">
<li>トップページ … index.html</li>



<li>記事ページ … single.html</li>



<li>固定ページ … page.html</li>
</ul>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-cocoon-blocks-button-1 button-block"><a href="" class="btn" target="_self"><a href="/wp-content/uploads/2025/03/simplesimple_html.zip">Download</a></a></div>
</div>
</div>
</div>
</div></div>



<p>一応ダウンロードできるようにしてありますので、興味のある方はぜひ参考にしてみてください。 また、HTML + CSS を使ってサイトを作成する際は、レイアウトやページの機能を考慮し、以下の要素を最初からデザインに組み込んでおくと、WordPress のテーマ化がスムーズに進みます。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc2">デザインに入れておきたいもの</span></h5>



<ul class="wp-block-list">
<li>ヘッダー、サイドバー、フッター</li>



<li>メインナビゲーション</li>



<li>検索フォーム</li>



<li>ページ送り（ページャー、ページネーション）</li>



<li>コメント一覧、コメントフォーム</li>
</ul>
</div>



<p>言葉だけでは分かりにくいかもしれませんので、以下の画像を参考にしてください。これはサンプルのトップページのデザインです。</p>



<h4 class="wp-block-heading"><span id="toc3">トップページのデザイン</span></h4>



<figure class="wp-block-image size-full"><img decoding="async" width="940" height="1052" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_03_index.png" alt="" class="wp-image-759" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_03_index.png 940w, https://blog.takeho.com/wp-content/uploads/2025/03/752_03_index-572x640.png 572w, https://blog.takeho.com/wp-content/uploads/2025/03/752_03_index-768x860.png 768w" sizes="(max-width: 940px) 100vw, 940px" /><figcaption class="wp-element-caption">トップページのデザインです。オーソドックスな 2カラムレイアウトです。</figcaption></figure>



<p>レイアウトは、シンプルな 2 カラム構成です。ヘッダーの下にはナビゲーションを配置し、例として「HOME」と「ABOUT」を設けました。 また、ヘッダーやサイドバーには検索フォームも追加しておきます。</p>



<p>メインカラムには、記事のサンプルを 2 つほど用意しておきましょう。ブログ形式なので、「古い記事」「新しい記事」へ移動できる ページネーション も忘れずに設置します。</p>



<p>サイドバーには、カテゴリーや最新記事のリストを仮置きしておくと、後々の調整がスムーズになります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>続いてひとつひとつのブログ記事ページです。</p>



<h4 class="wp-block-heading"><span id="toc4">記事ページのデザイン</span></h4>



<figure class="wp-block-image size-full"><img decoding="async" width="940" height="1246" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_04_single.png" alt="" class="wp-image-760" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_04_single.png 940w, https://blog.takeho.com/wp-content/uploads/2025/03/752_04_single-483x640.png 483w, https://blog.takeho.com/wp-content/uploads/2025/03/752_04_single-768x1018.png 768w" sizes="(max-width: 940px) 100vw, 940px" /><figcaption class="wp-element-caption">記事ページのデザインです。コメント一覧やコメントフォームが必要ですね！</figcaption></figure>



<p>個別記事ページでは、記事の下にタグや投稿者情報を表示するようにしました。さらに、「次の記事」「前の記事」へ移動できるリンクも設置しています。</p>



<p>その下には、コメント一覧を表示し、訪問者がコメントを投稿できるフォームも用意しました。</p>



<p>なお、ヘッダー、サイドバー、フッターはトップページと共通のデザインを使用しています。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>最後に固定ページのデザインです。</p>



<h4 class="wp-block-heading"><span id="toc5">固定ページのデザイン</span></h4>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="940" height="605" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_05_page.png" alt="" class="wp-image-761" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_05_page.png 940w, https://blog.takeho.com/wp-content/uploads/2025/03/752_05_page-640x412.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_05_page-768x494.png 768w" sizes="(max-width: 940px) 100vw, 940px" /><figcaption class="wp-element-caption">固定ページのデザインです。カテゴリーや日付、ページャーはありません。</figcaption></figure>



<p>固定ページはブログの記事と違って、カテゴリーやタグの表示がありません。今回はページの性格上、日付の表示もなしにしています。また、ページャーやコメント一覧、コメント欄もなしにして、すっきりとしたレイアウトになってます。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">サンプルテーマのダウンロード</span></div><div class="caption-box-content block-box-content box-content">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-3 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>これから WordPress のテーマを作成していきますが、上記のデザインを元にした WordPress テーマも用意しました。HTML 版と比較しながら確認してみてください。</p>



<p>なお、このテーマのライセンスは <strong>GPL</strong> ですので、自由にご利用いただけます。</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-cocoon-blocks-button-1 button-block"><a href="" class="btn" target="_self"><a href="/wp-content/uploads/2025/03/simplesimple.zip">Download</a></a></div>
</div>
</div>
</div></div>



<p></p>



<h2 class="wp-block-heading"><span id="toc6">作成したデザインを WordPress のテーマファイルに変換</span></h2>



<p>それでは、作成した index.html を使って、WordPress のテーマ作成に取りかかりましょう！</p>



<p>まずは準備として、テーマフォルダを作成します。フォルダ名はテーマの名前を付けるのが分かりやすいでしょう。ここでは simplesimple という名前にします。</p>



<p>次に、この simplesimple フォルダに index.html とスタイルシート（CSS で画像を使用している場合は images フォルダも）を配置します。作業中にオリジナルのファイルを保持できるよう、コピーを作成しておくと安心です。</p>



<p>次に index.html のファイルの拡張子を .php に変更して、index.php にします。続いてスタイルシートの方は、style.css というファイル名にします。そして style.css の冒頭に、以下のようなコメントを入れます。</p>



<p><strong>style.css </strong></p>



<pre class="wp-block-code"><code>/*
Theme Name: テーマの名前
Description:テーマの説明
Theme URI: テーマの URL
Author: 作った人の名前
Author URI: 作った人の URL
Version: バージョン
License: ライセンス
License URI: ライセンスの URL
*/</code></pre>



<p>テーマ名は必須項目 なので、必ず記述しましょう。ここでは Simple Simple と設定します。</p>



<p>その他の項目は任意ですが、テーマを配布する場合は ライセンス情報 なども記載しておくと良いでしょう。</p>



<h3 class="wp-block-heading"><span id="toc7">WordPress の Themes フォルダに移してみよう！</span></h3>



<p>ここまで完了したら、作成した <strong>simplesimple</strong> フォルダを <strong>WordPress の <code>wp-content/themes</code> フォルダ</strong> に移動させます。</p>



<p>その後、<strong>WordPress の管理画面</strong> で <strong>「外観」→「テーマ」</strong> を開いてみましょう…。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="940" height="562" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_06_themes.png" alt="" class="wp-image-769" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_06_themes.png 940w, https://blog.takeho.com/wp-content/uploads/2025/03/752_06_themes-640x383.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_06_themes-768x459.png 768w" sizes="(max-width: 940px) 100vw, 940px" /><figcaption class="wp-element-caption">スクリーンショット画像はないけど、テーマとして認識されています！</figcaption></figure>



<p>こんな風にスクリーンショット画像は載ってないけど、WordPress のテーマとして認識されています！WordPress では、最低 index.php 一枚と、テーマ名などを記述（さっき書きましたね！）した style.css という名前のスタイルシートがあれば、テーマとして認識してくれるんです！でもちょっと画像がないのがさみしいので、キャプチャを撮影しておきましょう。</p>



<p>キャプチャを撮影したら、screenshot.png という名前で自分で作ったテーマフォルダ（今回は simplesimple フォルダ）に保存します。images フォルダではないので注意してください。また、画像のサイズは 640 x 480px 以下が推奨されてます。</p>



<p><strong>画像が表示されました</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="352" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_07_screenshot.png" alt="" class="wp-image-770" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_07_screenshot.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_07_screenshot-640x326.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>すると上記のように、スクリーンショットが表示されました！</p>



<h3 class="wp-block-heading"><span id="toc8">&nbsp;テーマを有効化して、サイトを確認してみよう！</span></h3>



<p>テーマとして認識されたので、ここで試しにテーマを<em>有効化</em>して、サイトの表示を確認してみることにします。すると …。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="338" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_08_non-css.png" alt="" class="wp-image-771" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_08_non-css.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_08_non-css-640x314.png 640w" sizes="(max-width: 690px) 100vw, 690px" /><figcaption class="wp-element-caption">CSSが効いてない … X(</figcaption></figure>



<p>この状態では、スタイルシートが適用されておらず、画像も表示されていません…。</p>



<p>実は、WordPress では基本的に相対パスが使用できません（※ただし、CSS 内のパス指定は例外です）。そのため、CSS や画像のパスを正しく指定するには、WordPress 特有の記述方法 を使う必要があります。</p>



<p>次に、その適切なパスの指定方法について解説していきます。</p>



<h3 class="wp-block-heading"><span id="toc9">WordPress のテンプレートタグ</span></h3>



<p>難しい説明は後にして、とりあえず&nbsp;<code>index.php</code>&nbsp;の&nbsp;<code>style.css</code>&nbsp;へのパスと、ファビコンへのパスを変更してみましょう。テキストエディタで&nbsp;<code>index.php</code>&nbsp;を開きます。</p>



<p><strong>index.php – &lt;head&gt;内の一部</strong></p>



<pre class="wp-block-code"><code>&lt;link rel="shortcut icon" href="images/favicon.ico"&gt;
&lt;link rel="stylesheet" href="style.css" media="screen"&gt;</code></pre>



<p>上記のように相対パスで書かれてる部分を …</p>



<pre class="wp-block-code"><code>&lt;link rel="shortcut icon" href="&lt;?php echo get_template_directory_uri(); ?&gt;/images/favicon.ico"&gt;
&lt;link rel="stylesheet" href="&lt;?php echo get_stylesheet_uri(); ?&gt;" media="screen"&gt;</code></pre>



<p>こんな風に PHP のコードで書き直します。これは WordPress の<em>テンプレートタグ</em>というもの。ここではふたつテンプレートタグを使っていますが、各テンプレートタグは下記のような役目をしています。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><strong>get_template_directory_uri</strong><br>テンプレートのあるディレクトリ URI を取得します。つまりテーマディレクトリです。</li>



<li><strong>get_stylesheet_uri</strong><br>style.css の URI を取得します。</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p><strong>WordPress Code</strong></p>



<ul class="wp-block-list">
<li><a rel="noopener" href="https://web.archive.org/web/20160412030809/http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_template_directory_uri" target="_blank">関数リファレンス/get template directory uri</a></li>



<li><a rel="noopener" href="https://developer.wordpress.org/reference/functions/get_stylesheet_uri/" target="_blank">Function Reference/get stylesheet uri</a></li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box not-nested-style cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">MEMO</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>以前は bloginfo(&#8216;template_directory&#8217;) といったテンプレートタグを使っていましたが、現在は get_template_directory_uri が推奨されてます。</p>
</div></div>



<p>テンプレートタグ を使用して記述すると、実際には以下のように絶対パスで出力される ようになります！</p>



<pre class="wp-block-code"><code>&lt;link rel="shortcut icon" href="http://example.com/wp-content/themes/simplesimple/images/favicon.ico"&gt;
&lt;link rel="stylesheet" href="http://example.com/wp-content/themes/simplesimple/style.css" media="screen"&gt;</code></pre>



<p>これで、スタイルシートとファビコンのパスが正しく通りました！<br>その結果、Webサイトがスタイルシートを適用した状態で表示されるようになりました。</p>



<p><strong>CSSが反映された状態</strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="930" height="338" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_00_css.png" alt="" class="wp-image-774" style="width:840px;height:auto" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_00_css.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_00_css-640x233.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_00_css-768x279.png 768w" sizes="(max-width: 930px) 100vw, 930px" /></figure>



<p>記事内の画像については、あとで投稿画面から投稿するので、気にしなくて OK です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>WordPress のテーマ作成とは、静的な HTML コードを WordPress のテンプレートタグを使って書き換えていく作業 と言えます。</p>



<p>先ほどは テーマディレクトリやスタイルシートの URL を取得するテンプレートタグ を紹介しましたが、WordPress には 他にも多くのテンプレートタグ が用意されています。</p>



<p>すべてを暗記する必要はありませんが、何度もテーマを作成していくうちに自然と覚えていく でしょう！</p>



<h2 class="wp-block-heading"><span id="toc10">WordPress の構造に合わせてテンプレートを分割しよう</span></h2>



<p>次に、WordPress サイトの特徴のひとつでもある「index.php の分割」 を行います。「index.php を分割する」とは、ヘッダーやサイドバー、フッターなどを個別のファイルに分けて管理する方法 です。こうすることで、各パーツを再利用しやすくなり、効率的にサイトを構築できます。</p>



<p>この仕組みを 図を使って説明 していきます。</p>



<p><strong>WordPress サイトの構造</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="775" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_09_template-files.png" alt="" class="wp-image-775" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_09_template-files.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_09_template-files-640x533.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_09_template-files-768x640.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">大きな画像ばかりで申し訳ないです… こんな感じで、レイアウトの各パーツごとにファイルが分割 されています。</figcaption></figure>



<p>このように、デザインの各パーツごとに別々のファイルに分割 されています。HTML ではあまり馴染みがないかもしれませんが、PHP では一般的な手法です。</p>



<p>この方法に従い、index.php を 4 つのパーツに分割 していきます。</p>



<h3 class="wp-block-heading"><span id="toc11">ヘッダー部分を分割</span></h3>



<p>まずは、ヘッダー部分を「header.php」として分割 します。</p>



<p>index.php の 1行目からヘッダーの終わりまで を切り取り、<strong>header.php</strong> という名前でテーマフォルダ内に保存 しましょう。</p>



<p><strong>切り取った header.php</strong></p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html lang="ja"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;title&gt;TOP PAGE&lt;/title&gt;
... 省略 ...
&lt;/head&gt;
&lt;body&gt;
&lt;div id="container"&gt;
&lt;!-- header --&gt;
&lt;div id="header" class="clearfix"&gt;
... 省略 ...
&lt;/div&gt;
&lt;!-- /header --&gt;</code></pre>



<p>header.php を切り取ってしまったので、index.php の方はヘッダー部分が丸ごとなくなってしまいました。そこで header.php（つまりヘッダー部分）を読み込むようにしてあげます。header.php を読み込むには、index.php に下記のように記述します。</p>



<p><strong>index.php のヘッダー部分</strong></p>



<pre class="wp-block-code"><code>&lt;?php get_header(); ?&gt;
&lt;!-- main --&gt;
&lt;div id="main"&gt;
… 以下省略 …</code></pre>



<p><code>get_header</code>&nbsp;は、<code>header.php</code>&nbsp;を読み込むテンプレートタグ（読み込みタグなので、<em>インクルードタグ</em>って呼んだりもします）。こんな風にして&nbsp;<code>header.php</code>&nbsp;を読み込んで、ヘッダー部分を表示します。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">INCLUDE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>get_header</code>&nbsp;… header.php を読み込む</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex</p>



<ul class="wp-block-list">
<li><a href="https://codex.wordpress.org/Include_Tags">インクルードタグ</a></li>
</ul>
</div>



<h3 class="wp-block-heading"><span id="toc12">サイドバー部分を分割</span></h3>



<p>先ほど header.php を分離したのと同様に、今度はサイドバーの部分を sidebar.php として切り出します。header.php のときと同じように、テーマフォルダ内に保存しましょう！</p>



<p><strong>切り取った sidebar.php</strong></p>



<pre class="wp-block-code"><code>&lt;!-- sidebar --&gt;
&lt;div id="sidebar"&gt;
&lt;div class="widget"&gt;
&lt;h2&gt;Category&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;ケーキ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;コーヒー&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
...省略...
&lt;/div&gt;
&lt;!-- /sidebar --&gt;</code></pre>



<p>そしてサイドバーがすっぽり欠けた&nbsp;<code>index.php</code>&nbsp;には、<code>get_sidebar</code>&nbsp;というテンプレートタグ（インクルードタグ）を記述します。</p>



<p><strong>index.php のサイドバー部分</strong></p>



<pre class="wp-block-code"><code>...省略...
&lt;?php get_sidebar(); ?&gt;
&lt;/div&gt;
&lt;!-- /container --&gt;
&lt;!-- footer --&gt;
&lt;div id="footer"&gt;
...省略...
&lt;/div&gt;
&lt;!-- /footer --&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>



<h3 class="wp-block-heading"><span id="toc13">&nbsp;フッター部分を分割しよう</span></h3>



<p>最後にフッター部分を分割します。同じように <code>index.php</code> のフッター部分を切り取り、<code>footer.php</code> という名前でテーマフォルダ内に保存します。</p>



<p><strong>切り取った footer.php</strong></p>



<pre class="wp-block-code"><code>&lt;/div>
&lt;!-- /container -->
&lt;!-- footer -->
&lt;div id="footer">
&lt;p id="copyright" class="wrapper">© Simple x Simple All Rights Reserved.&lt;/p>
&lt;/div>
&lt;!-- /footer -->
&lt;/body>
&lt;/html></code></pre>



<p>すっぽりフッター部分が欠けた <code>index.php</code> には、<code>get_footer</code> というテンプレートタグ（インクルードタグ）を書き加えます。マークアップ的には、フッターはサイドバーの次に記述されていることが多いと思うので、下記のように <code>get_sidebar</code> と <code>get_footer</code> が並ぶことが多いと思います。</p>



<p><strong>index.php のフッター部分</strong></p>



<pre class="wp-block-code"><code>…省略...
&lt;/div>
&lt;!-- /main -->
&lt;?php get_sidebar(); ?></code></pre>



<p>これでページの分割ができました。なんでわざわざ分割するんだろう？と思う人もいるかもしれませんが、これはもうちょっと後で説明しますね！</p>



<h3 class="wp-block-heading"><span id="toc14">WordPress のテンプレートファイルいろいろ</span></h3>



<p>ここまでくると、テーマファイルの中には以下のファイルが並んでるはずです。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="690" height="310" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_13_321312.png" alt="" class="wp-image-895" style="width:848px;height:auto" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_13_321312.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_13_321312-640x288.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>キャプチャ画像の <code>screenshot.png</code>、CSS用の画像を格納する <code>images</code> フォルダ、スタイルシート <code>style.css</code>、そして 4 つの PHP ファイルが含まれているはずです。これらの PHP ファイルは、WordPress において「テンプレートファイル」と呼ばれます。この用語は頻繁に登場するため、ぜひ覚えておきましょう！</p>



<p>先ほど、<code>index.php</code> を分割し、<code>header.php</code>、<code>sidebar.php</code>、<code>footer.php</code> という部品ファイルを作成しました。テンプレートファイルの中でも、こうした「部品」として機能するファイルは「モジュールファイル」と呼ばれることもありますので、あわせて覚えておくと便利です。</p>



<p>この時点では、ファイルを分割しただけなので、ページの見た目は HTML で作成した場合と変わりません。ここから、各テンプレートファイルに WordPress の機能を組み込んでいきましょう。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc15">ここまでのまとめ</span></h5>



<ul class="wp-block-list">
<li>ヘッダー部分は <code>header.php</code> にする</li>



<li>サイドバー部分は <code>sidebar.php</code> にする</li>



<li>フッター部分は <code>footer.php</code> にする</li>



<li><code>index.php</code> 側は、各インクルードタグで読み込む。</li>
</ul>
</div>



<h2 class="wp-block-heading"><span id="toc16">header.php をカスタマイズしてヘッダーを整える</span></h2>



<p>前半では <code>&lt;head&gt;</code> 内のファビコンと CSS ファイルへのリンクを、テンプレートタグを用いて編集しました。しかし、これで <code>header.php</code> が完成したわけではありません。ロゴや検索フォームなどの部分も、WordPress のテーマとして適切な形に作り替えていく必要があります。</p>



<p>作業を進める際は、デザインと照らし合わせながら確認すると分かりやすいでしょう。そこで、ヘッダーのデザインを改めてチェックしてみましょう。</p>



<p><strong>ヘッダーのデザイン</strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="930" height="269" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_14_header.png" alt="" class="wp-image-896" style="width:840px;height:auto" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_14_header.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_14_header-640x185.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_14_header-768x222.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">ヘッダーのデザインは、至ってシンプルですねー。</figcaption></figure>



<h3 class="wp-block-heading"><span id="toc17">サイト名と紹介文の部分</span></h3>



<p>ヘッダー部分はとてもシンプルです。サイト名とちょっとした紹介文があり、検索フォームとナビゲーションがあります。サイト名部分には、トップページへのリンクを貼ることにします。まずは直書きした HTML を確認してみます。</p>



<p><strong>HTML – サイト名と紹介文の部分</strong></p>



<pre class="wp-block-preformatted"><code>&lt;h1 id="logo"></code><br><code>&lt;a href="#">&lt;span>Simple x Simple&lt;/span>&lt;/a></code><br><code>&lt;/h1></code><br><code>&lt;p id="description">Just another WordPress site&lt;/p></code></pre>



<p><code>&lt;h1&gt;</code>&nbsp;タグと&nbsp;<code>&lt;p&gt;</code>&nbsp;タグでマークアップされています。これを元に、サイト名やトップページへのリンク、紹介部分の部分をテンプレートタグを使って、書き直してしまいましょう。使うテンプレートタグは下記のものです。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>bloginfo('name')</code> … サイト名を表示する</li>



<li><code>bloginfo('description')</code> … 紹介文を表示する</li>



<li><code>home_url()</code> … トップページの URL を取得する</li>
</ul>
</div></div>



<p><strong>header.php（一部）</strong></p>



<pre class="wp-block-code"><code>&lt;h1 id="logo">
&lt;a href="&lt;?php echo home_url('/'); ?>">&lt;span>&lt;?php bloginfo('name'); ?>&lt;/span>&lt;/a>
&lt;/h1>
&lt;p id="description">&lt;?php bloginfo('description'); ?>&lt;/p></code></pre>



<p>サイト名や紹介文には <code>bloginfo</code> というテンプレートタグを使います。ここで表示するサイト名や紹介文は、管理ページの<strong> <em>設定 → 一般</em> </strong>からいつでも変更することができます。</p>



<p><strong>設定 → 一般</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="338" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_15_sitesetting.png" alt="" class="wp-image-897" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_15_sitesetting.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_15_sitesetting-640x314.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<h3 class="wp-block-heading"><span id="toc18">検索フォーム</span></h3>



<p>続いて検索フォーム部分です。同じように直書きした HTML から見ていきましょう。</p>



<p><strong>HTML – 検索フォーム</strong></p>



<pre class="wp-block-code"><code>&lt;form method="get" id="searchform" action="#">
&lt;input type="text" placeholder="検索" name="s" id="s">
&lt;input type="submit" id="searchsubmit" value="">
&lt;/form></code></pre>



<p><code>&lt;form&gt;</code> 内には、テキストフィールドと送信ボタンが含まれています。テキストフィールドの <code>type</code> は <code>'text'</code> になっていますが、<code>'search'</code> に変更しても問題ありません。</p>



<p>書き換える必要があるのは、<code>action</code> 属性の送信先 URL です。これはトップページの URL で問題ないため、先ほどと同様に <code>home_url()</code> を使用すればOKです。</p>



<p>また、検索フォームを作成する際に注意すべきポイントとして、<code>name</code> 属性の設定があります。検索キーワードは <code>s</code> というパラメータで渡されるため、必ず <code>name="s"</code> と指定しましょう。</p>



<p><strong>header.php（検索フォームの部分）</strong></p>



<pre class="wp-block-code"><code>&lt;form method="get" id="searchform" action="&lt;?php echo home_url('/'); ?>">
&lt;input type="text" placeholder="検索" name="s" id="s">
&lt;input type="submit" id="searchsubmit" value="">
&lt;/form></code></pre>



<p>ここまでできたら、検索フォーム自体を部品化してしまいましょう！<code>&lt;form> ~ &lt;/form></code> の部分を <code>index.php</code> から切り取って、<code>searchform.php</code> という名前でテーマフォルダ内に保存します。そして <code>header.php</code> の方では、<code>get_search_form()</code> と記述して読み込むようにします。</p>



<p><strong>header.php（検索フォームの部分）</strong></p>



<pre class="wp-block-code"><code>&lt;?php get_search_form(); ?></code></pre>



<h3 class="wp-block-heading"><span id="toc19"> ナビゲーション部分</span></h3>



<p>続いてナビゲーションの部分です。まずは基本となる HTML でのマークアップから見ていきます。</p>



<p><strong>header.php – ナビゲーションの部分</strong></p>



<pre class="wp-block-code"><code>&lt;!-- Navigation -->
&lt;div>
&lt;ul class="menu">
&lt;li class="current_page_item">&lt;a href="#">HOME&lt;/a>&lt;/li>
&lt;li>&lt;a href="#">ABOUT&lt;/a>
&lt;ul class="sub-menu">
&lt;li>&lt;a href="#">CHILD#1&lt;/a>&lt;/li>
&lt;li>&lt;a href="#">CHILD#2&lt;/a>&lt;/li>
&lt;li>&lt;a href="#">CHILD#3&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/div>
&lt;!-- /Navigation --></code></pre>



<p><code>&lt;div&gt;</code> で全体を囲み、その中に <code>&lt;ul&gt;</code> と <code>&lt;li&gt;</code> を使ってマークアップされています。さらに、サブメニューがあるため、リストは入れ子構造になっていますね。</p>



<p>この <code>&lt;div&gt; ～ &lt;/div&gt;</code> の部分をどのように記述するかというと…、ひとまず以下のコードに丸ごと置き換えてしまいましょう。</p>



<p><strong>header.php – ナビゲーションの部分</strong></p>



<pre class="wp-block-code"><code>&lt;!-- Navigation -->
&lt;?php wp_nav_menu( array ( 'theme_location' => 'header-navi' ) ); ?>
&lt;!-- /Navigation --></code></pre>



<p><code>wp_nav_menu</code> というテンプレートタグについては、後ほど詳しく説明しますが、この一行を記述するだけで、先ほどのように <code>&lt;div&gt;</code> で囲まれた <code>&lt;ul&gt;</code>・<code>&lt;li&gt;</code> のマークアップが生成され、ナビゲーションが表示されます。</p>



<p>まずは固定ページを1つか2つ作成し、サイトの表示を確認してみましょう。</p>



<p><strong>固定ページを作成</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="419" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_16_pages.png" alt="" class="wp-image-898" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_16_pages.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_16_pages-640x288.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_16_pages-768x346.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">BOUT と CONTACT という固定ページを作りました。</figcaption></figure>



<p><strong>ナビゲーション</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="216" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_17_navi.png" alt="" class="wp-image-899" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_17_navi.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_17_navi-640x200.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>こんな風に、作った固定ページがナビゲーションとして表示されます。出力される HTML は下記のような感じです。</p>



<p><strong>出力される HTML</strong></p>



<pre class="wp-block-code"><code>&lt;div class="menu">
&lt;ul>
&lt;li>&lt;a href="#">ABOUT&lt;/a>&lt;/li>
&lt;li>&lt;a href="#">CONTACT&lt;/a>&lt;/li>
&lt;/ul>
&lt;/div></code></pre>



<p><code>menu</code> というクラスのついた <code>div</code> で囲まれて、<code>ul</code>、<code>li</code>要素で固定ページへのリンクが表示されます。ここでチェックしたいのは、<em><code>div</code> タグに <code>menu</code> というクラスがつく … </em>ということです（なんで注意したいのかは、後述します！）。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>wp_nav_menu</code> … ナビゲーションを表示する</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a rel="noopener" href="https://developer.wordpress.org/reference/functions/wp_nav_menu/" target="_blank">テンプレートタグ/wp nav menu</a></p>
</div>



<h3 class="wp-block-heading"><span id="toc20">&lt;head>内を作ろう！</span></h3>



<p>さっきは <code>&lt;body></code> 以下のヘッダー部分を作りました。ちょっと前後しちゃいましたが、今度は <code>&lt;head></code> 内を作っていくことにします。現状ではファビコンとスタイルシートへのパスを、テンプレートタグで書き直しただけでした。</p>



<p><strong>header.php – &lt;head> 内のコード</strong></p>



<pre class="wp-block-code"><code>&lt;head>
&lt;meta charset="UTF-8">
&lt;title>ページタイトル&lt;/title>
&lt;link rel="shortcut icon" href="&lt;?php echo get_template_directory_uri(); ?>/images/favicon.ico">
&lt;link rel="stylesheet" href="&lt;?php echo get_stylesheet_uri(); ?>" media="screen">
&lt;/head></code></pre>



<p>書き換えたいのは &lt;title> タグの部分。タイトルはトップページ以下、色んなページで変わる部分ですよねー。まず、&lt;title> タグにはサイト名を必ず入れる … という前提で、下記のように書きます。</p>



<p><strong>header.php（&lt;title> 部）</strong></p>



<pre class="wp-block-code"><code>&lt;title>&lt;?php bloginfo('name'); ?>&lt;/title></code></pre>



<p><code>bloginfo('name')</code> は、<code>&lt;h1&gt;</code> タグでサイト名を表示する際にも使用しましたね。これを <code>&lt;title&gt;</code> タグ内に記述すれば、サイト名を表示させることができます。</p>



<p>しかし、このままではすべてのページのタイトルが同じになってしまいます。そこで、<code>wp_title</code> というテンプレートタグを組み合わせて、ページごとに適切なタイトルを表示させましょう。</p>



<pre class="wp-block-code"><code>&lt;title>&lt;?php wp_title( '|', true, 'right' ); bloginfo('name'); ?>&lt;/title></code></pre>



<p><code>wp_title</code> は、各ページのタイトルを表示してくれる便利なテンプレートタグです。<code>()</code>の中に <code>'|'</code> となっていて、<code>'right'</code> という記述があります。これはタイトルを下記のように表示するためです。</p>



<h6 class="wp-block-heading"><span id="toc21">ページのタイトル | サイト名</span></h6>



<p>ページタイトルの右側（right）に「|」という区切り文字を入れるっていう意味になってます。これで title タグの部分は完成です！</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>wp_title</code> … ページのタイトルを出力</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a rel="noopener" href="https://web.archive.org/web/20160412030809/http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_title" target="_blank">テンプレートタグ/wp title</a></p>
</div>



<h3 class="wp-block-heading"><span id="toc22">&lt;head> 内に書いておきたい大事なもの</span></h3>



<p>ここで、<code>&lt;head&gt;</code> 内に追加しておきたい重要な要素が2つあります。まず1つ目は、WordPress のコメント欄で必要となる JavaScript ファイルの読み込みに関する記述です。</p>



<p>どのような JavaScript ファイルなのかは後ほど説明しますが、<code>&lt;head&gt;</code> 内に以下のコードを追加しましょう。</p>



<p><strong>header.php（一部）</strong></p>



<pre class="wp-block-code"><code>...省略...
&lt;?php if ( is_singular() ) wp_enqueue_script( "comment-reply" ); ?>
&lt;/head></code></pre>



<p>さらにもうひとつ、絶対に書いておかなくちゃいけないものがあります。</p>



<pre class="wp-block-code"><code>&lt;?php if ( is_singular() ) wp_enqueue_script( "comment-reply" ); ?>
&lt;?php wp_head(); ?>
&lt;/head></code></pre>



<p><code>&lt;/head&gt;</code> の直前に <code>wp_head()</code> を追加しましょう。この関数は、WordPress が <code>&lt;head&gt;</code> 内に必要なコードを自動で出力するために欠かせないものです。</p>



<p>例えば、プラグインを使用した際に、そのスタイルシートのリンクを適切に挿入するなど、状況に応じた処理を行います。そのため、必ず記述するようにしましょう。</p>



<p>これで <code>header.php</code> の作業は完了です！</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc23">header.php のまとめ</span></h5>



<ul class="wp-block-list">
<li>imagesフォルダなどを利用する際のテーマディレクトリへのパスは、<code>get_template_directory_uri</code> で取得する。</li>



<li><code>style.css</code> へのパスは、<code>get_stylesheet_uri</code> で取得する。</li>



<li>トップページの URL は <code>home_url</code> で取得する。</li>



<li>ブログの名前、紹介文は <code>bloginfo</code> で表示する。</li>



<li>検索フォームは <code>searchform.php</code> に部品化しておく。</li>



<li><code>get_search_form</code> で search form.php を読み込む。</li>



<li><code>wp_nav_menu</code> でナビゲーションを表示する。</li>



<li>head 内に <code>wp_enqueue_script( "comment-reply" )</code> と記述して、JavaScript を読み込む。</li>



<li><code>wp_head</code> を忘れずに！</li>
</ul>
</div>



<h2 class="wp-block-heading"><span id="toc24">メインのコンテンツを管理する index.php を調整</span></h2>



<p><code>index.php</code> は、WordPress サイトに欠かせないメインのテンプレートファイルです。ファイルを分割する際に <code>get_header()</code> などを追加しましたが、メインコンテンツの部分はまだ HTML をそのまま記述した状態になっています。</p>



<p><strong>index.php</strong></p>



<pre class="wp-block-code"><code>&lt;?php get_header(); ?>
&lt;!-- main -->
&lt;div id="main">
&lt;!-- post -->
&lt;div class="post">
&lt;h2>&lt;a href="#">記事のタイトル&lt;/a>&lt;/h2>
&lt;p class="post-meta">
&lt;span class="post-date">2012年12月23日&lt;/span>
&lt;span class="category">Category - &lt;a href="#">ケーキ&lt;/a>
&lt;span class="comment-num">&lt;a href="#">Comment : 0&lt;/a>&lt;/span>
&lt;/p>
&lt;p>... 記事の本文（画像を含む）...&lt;/p>
&lt;p>&lt;a href="#" class="more-link">続きを読む »&lt;/a>&lt;/p>
&lt;/div>
&lt;!-- /post -->
...2つ目の記事（省略）...
&lt;!-- pager -->
&lt;div class="navigation">
&lt;div class="alignleft">&lt;a href="#">« PREV&lt;/a>&lt;/div>
&lt;div class="alignright">&lt;a href="#">NEXT »&lt;/a>&lt;/div>
&lt;/div>
&lt;!-- /pager -->
&lt;/div>
&lt;!-- /main -->
&lt;?php get_sidebar(); ?>
&lt;?php get_footer(); ?></code></pre>



<p>記事の部分（上記の青い部分）… <code>div.post</code> の中に、いろいろなものが記述されています。ここで <code>div</code> の中の「表示したいもの」を、ちょっと整理してみましょう。</p>



<ul class="wp-block-list">
<li>記事のタイトル</li>



<li>日付</li>



<li>カテゴリー</li>



<li>コメント数</li>



<li>コンテンツ（画像を含む）</li>
</ul>



<p>この部分を HTML の直書きではなく、WordPress のテンプレートタグを使って書き換えるのが次の作業です。しかし、その前に重要な「WordPress ループ」について確認しておきましょう。</p>



<p>「このコードをどこに書くのか？」はひとまず置いておき、まずはその概要を見ていきますね。</p>



<h3 class="wp-block-heading"><span id="toc25">WordPress ループ</span></h3>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="338" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_18_wploop.png" alt="" class="wp-image-900" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_18_wploop.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_18_wploop-640x314.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>まず、WordPress では投稿画面で記事を作成しますよね？ そして、記事が存在すれば表示できますが、何も投稿されていなければ当然表示するものがありません。</p>



<p>そこで、まず <strong>①「表示すべき記事があるか？」</strong> をチェックし、記事があれば <strong>② 記事を表示する処理</strong> を実行します。逆に記事がなければ <strong>③「表示する記事がありません」という処理</strong> を実行する流れになります。これは PHP の基本構文である <code>if</code> 文を使い、記事の有無に応じて処理を分岐させているわけですね。</p>



<p>特に重要なのが <strong>②の部分</strong> です。トップページなどでは通常、複数の記事が表示されます。例えば、記事を2つ書けば2つ、3つ書けば3つ表示されるため、この部分は <strong>繰り返し処理</strong> になります。この仕組みを理解しておくと、WordPress の動作がより分かりやすくなります。</p>



<p>この一連の処理を <strong>「WordPress ループ」</strong> と呼びます。ループとは「繰り返し処理」を意味する言葉ですね！</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>それでは、<code>index.php</code> に戻りましょう。先ほど説明した <strong>WordPress ループ</strong> を <code>index.php</code> に記述し、実際に投稿した記事が表示されるようにしてみます。</p>



<p><strong>index.php</strong></p>



<pre class="wp-block-code"><code>&lt;?php get_header(); ?>
&lt;!-- main -->
&lt;div id="main">
&lt;?php if (have_posts()) :
while (have_posts()) : the_post();
// この部分で記事を表示する処理をします。
endwhile; // 繰り返し処理終了
else : ?>
&lt;div class="post">
&lt;h2>記事はありません&lt;/h2>
&lt;p>お探しの記事は見つかりませんでした。&lt;/p>
&lt;/div>
&lt;?php endif; ?>
&lt;!-- pager -->
&lt;div class="navigation">
&lt;div class="alignleft">&lt;a href="#">« PREV&lt;/a>&lt;/div>
&lt;div class="alignright">&lt;a href="#">NEXT »&lt;/a>&lt;/div>
&lt;/div>
&lt;!-- /pager -->
&lt;/div>
&lt;!-- /main -->
&lt;?php get_sidebar(); ?>
&lt;?php get_footer(); ?></code></pre>



<p>メインカラムとなる <code>div#main</code> の中に <strong>WordPress ループ</strong> を記述しました（青い部分）。記事がない場合は、<code>&lt;p&gt;お探しの記事は見つかりませんでした。&lt;/p&gt;</code> などと表示すれば問題ありません。</p>



<p>また、記事数が増えた際に必要となる「次のページ」「前のページ」へのリンクは、WordPress ループの後に記述し、後ほどテンプレートタグを使って実装します。</p>



<p>次に、ループの中で「表示したい情報」をテンプレートタグを使って記述していきましょう。使用するテンプレートタグは以下の通りです。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>記事のタイトルを表示 … <code>the_title</code></li>



<li>記事のパーマリンクを出力（URLのこと）… <code>the_permalink</code></li>



<li>記事の日付を表示 … <code>the_date</code>（後でちょっと補足あり）</li>



<li>記事のカテゴリーを表示 … <code>the_category</code></li>



<li>コメント数を表示 … <code>comments_popup_link</code></li>



<li>コンテンツ（画像含む）、続きを読むのリンクを表示 … <code>the_content</code></li>
</ul>
</div></div>



<p>ちょっとたくさんありますが … たとえば記事のタイトルを <code>&lt;h2></code> でマークアップして、リンクで囲みたいなら下記のように記述します。</p>



<pre class="wp-block-code"><code>&lt;h2>&lt;a href="&lt;?php the_permalink(); ?>">&lt;?php the_title(); ?>&lt;/a>&lt;/h2></code></pre>



<p>HTML タグと WordPress のテンプレートタグが混在していますが、整理して考えれば、それほど複雑ではありません。</p>



<p>では、<code>index.php</code> の <strong>WordPress ループ</strong> 内にテンプレートタグを追加していきましょう。もともとの HTML と比較しながら確認してみてくださいね！</p>



<p><strong>もともとのHTML</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="283" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_19_.png" alt="" class="wp-image-901" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_19_.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_19_-640x195.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_19_-768x234.png 768w" sizes="(max-width: 930px) 100vw, 930px" /></figure>



<p><strong>テンプレートタグで書き直したもの</strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="930" height="350" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_20_index-loop.png" alt="" class="wp-image-902" style="width:839px;height:auto" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_20_index-loop.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_20_index-loop-640x241.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_20_index-loop-768x289.png 768w" sizes="(max-width: 930px) 100vw, 930px" /></figure>



<p>記事のタイトル、日付、カテゴリー、コメント数、そして本文（コンテンツ）を、テンプレートタグを使って書き直しました。これにより、矢印内の <code>&lt;div&gt; ～ &lt;/div&gt;</code> の部分が、記事の数だけ繰り返し表示されるようになります。</p>



<p>また、<code>div</code> タグに <code>the_ID()</code> などのテンプレートタグを追加していますが、これについては後ほど説明しますね。</p>



<p>このように、WordPress のテーマ作成では <strong>多くのテンプレートタグ</strong> を活用します。各テンプレートタグの使い方は <strong>WordPress Codex</strong> にまとめられているため、分からないものがあれば調べる習慣をつけておくと便利です。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a href="https://developer.wordpress.org/reference/functions/the_title/">テンプレートタグ/the title</a><br><a href="https://developer.wordpress.org/reference/functions/the_permalink/" data-type="link" data-id="https://developer.wordpress.org/reference/functions/the_permalink/">テンプレートタグ/the permalink</a><br><a href="https://developer.wordpress.org/reference/functions/the_date/">テンプレートタグ/the date</a><br><a href="https://developer.wordpress.org/reference/functions/the_category/">テンプレートタグ/the category</a><br><a href="https://developer.wordpress.org/reference/functions/comments_popup_link/">テンプレートタグ/comments popup link</a><br><a href="https://developer.wordpress.org/reference/functions/the_content/">テンプレートタグ/the content</a></p>
</div>



<h3 class="wp-block-heading"><span id="toc26">ちょっと寄り道 – 日付を表示する the_date</span></h3>



<p>日付を表示する <code>the_date</code> の表示形式は、管理画面の一般設定から行うことができます！</p>



<p><strong>設定 → 一般 から日付の設定</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="376" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_21_date.png" alt="" class="wp-image-903" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_21_date.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_21_date-640x349.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>ただし、<code>the_date()</code> には <strong>同じ日付の記事が複数ある場合、2つ目以降の日付が表示されない</strong> という仕様があります。少し分かりにくいので、下の図を参考にしてみてください。</p>



<p><strong>the_date での日付の表示</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="250" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_22_the_date.png" alt="" class="wp-image-904" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_22_the_date.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_22_the_date-640x232.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>このようなレイアウトで日付とタイトルを表示する場合、<code>the_date()</code> を使うとスッキリして見やすくなるかもしれませんね！</p>



<p>しかし、一般的なブログのレイアウトでは <strong>すべての記事に日付を表示したい</strong> ことが多いでしょう。その場合は、<code>the_date()</code> の代わりに、次のように記述すればOKです。</p>



<pre class="wp-block-code"><code>&lt;?php echo get_the_date(); ?></code></pre>



<p><code>the_date</code> の代わりに、<code>get_the_date</code> を使います！</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a rel="noopener" href="https://developer.wordpress.org/reference/functions/get_the_date/" target="_blank">テンプレートタグ/get the date</a></p>
</div>



<h3 class="wp-block-heading"><span id="toc27">記事を投稿して表示を確認</span></h3>



<p>ここまでできたら管理画面からいくつか記事を投稿して、トップページの表示を確認してみます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="474" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_23_new-post.png" alt="" class="wp-image-906" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_23_new-post.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_23_new-post-640x326.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_23_new-post-768x391.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">記事を公開したら、トップページの表示を確認してみます。</figcaption></figure>



<p>そしてトップページを確認してみると …。</p>



<p><strong>トップページの表示</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="514" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_24_toppage.png" alt="" class="wp-image-907" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_24_toppage.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_24_toppage-640x477.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>こんな風に投稿した記事が表示されました！</p>



<h3 class="wp-block-heading"><span id="toc28">ちょっと寄り道 – WordPress が自動で付けてくれるクラス</span></h3>



<p>さっきの WordPress ループの中、記事を囲む <code>&lt;div></code> タグには、下記のようにいくつかテンプレートタグが記述されていました。</p>



<pre class="wp-block-code"><code>&lt;div id="post-&lt;?php the_ID(); ?>" &lt;?php post_class(); ?>></code></pre>



<p>まず、<code>id="post-&lt;?php the_ID(); ?&gt;"</code> の部分について説明します。これは、各記事に <strong>一意の ID を付与する</strong> ための記述です。<code>the_ID()</code> を使うと、WordPress が自動的に生成する記事の ID を出力できます。</p>



<p>また、その後にある <code>&lt;?php post_class(); ?&gt;</code> という記述も重要です。これを追加すると、WordPress が <strong>ページの種類に応じたクラス</strong> を自動で付与してくれます。たとえば、トップページではどのようなクラスが適用されるのでしょうか…。</p>



<ul class="wp-block-list">
<li><code>post</code> … ブログ記事を意味するクラス</li>



<li><code>type-post</code> … 投稿のタイプを意味するクラス（post はブログ記事の意味）</li>



<li><code>category-cake</code> … 属するカテゴリーを表すクラス<br>などなど …</li>
</ul>



<p>ここで覚えておきたいのは <strong><code>post</code> クラス</strong> です。ブログ記事を表示する場合、<code>post</code> というクラスが自動で追加されます。しかし、固定ページを表示するときは <strong><code>page</code> クラス</strong> に変わるため、この違いに注意が必要です。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>the_ID</code> … 記事の ID を出力します。</li>



<li><code>post_class</code> … 記事に合わせてクラスを作ってくれます。</li>
</ul>
</div></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a href="https://developer.wordpress.org/reference/functions/post_class/">the_IDテンプレートタグ/post class</a></p>
</div>



<h4 class="wp-block-heading"><span id="toc29">画像につくクラス</span></h4>



<p>また、記事内の画像にもクラスがつくのはご存知だと思います。中でも重要なのは、レイアウトに関するクラスです。</p>



<p><strong>メディアの挿入</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="700" height="492" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_25_media.png" alt="" class="wp-image-908" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_25_media.png 700w, https://blog.takeho.com/wp-content/uploads/2025/03/752_25_media-640x450.png 640w" sizes="(max-width: 700px) 100vw, 700px" /><figcaption class="wp-element-caption">「配置」によって、つくクラスが変わりますよね！</figcaption></figure>



<p>画像を貼付けるとき、配置から「左」「右」「中央」を選ぶと、下記のようなクラスが&nbsp;<code>&lt;img&gt;</code>&nbsp;タグにつきます。</p>



<ul class="wp-block-list">
<li><code>alignleft</code> … 左に配置</li>



<li><code>alignright</code> … 右に配置</li>



<li><code>aligncenter</code> … センターに配置</li>
</ul>



<p>なので&nbsp;<code>style.css</code>&nbsp;で、各レイアウトにあわせて、<code>float</code>&nbsp;などを記述しておかないと、ちゃんとレイアウトできなくなっていまいますね！</p>



<h3 class="wp-block-heading"><span id="toc30">次のページ、前のページへのページャーを付けよう！</span></h3>



<p>少しクラスの話に寄り道しましたが、記事の表示部分が完了したので、次は <strong>「次のページ」「前のページ」</strong> のリンクを追加していきます。これは、記事が増えて <strong>1ページでは収まりきらなくなった場合に表示される</strong> ものです。</p>



<p>ページャーの実装方法はいくつかありますが、一番シンプルなのは <strong>「次のページ」「前のページ」</strong> というリンクを表示する方法です。</p>



<p><strong>「次のページ」「前のページ」</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="315" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_26_pager.png" alt="" class="wp-image-909" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_26_pager.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_26_pager-640x292.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>これもまず、直書きしたHTML をチェックしてみましょう。</p>



<p><strong>index.php – ページャーの HTML</strong></p>



<pre class="wp-block-code"><code>&lt;!-- pager -->
&lt;div class="navigation">
&lt;div class="alignleft">&lt;a href="#">« PREV&lt;/a>&lt;/div>
&lt;div class="alignright">&lt;a href="#">NEXT »&lt;/a>&lt;/div>
&lt;/div>
&lt;!-- /pager --></code></pre>



<p>今回は大きく <code>&lt;div></code> で囲んで、中にふたつの <code>&lt;div></code> を入れ子にした状態でマークアップしてみました。それではいつものように、テンプレートタグを使って書き換えてみます。</p>



<p><strong>index.php – ページャーの部分</strong></p>



<pre class="wp-block-code"><code>&lt;!-- pager -->
&lt;?php if ( $wp_query -> max_num_pages > 1 ) : ?>
&lt;div class="navigation">
&lt;div class="alignleft">&lt;?php next_posts_link('« PREV'); ?>&lt;/div>
&lt;div class="alignright">&lt;?php previous_posts_link('NEXT »'); ?>&lt;/div>
&lt;/div>
&lt;?php endif; ?>
&lt;!-- /pager --></code></pre>



<p>まず if文で大きく囲んでありますが、これは「もしページ数が 1ページより多かったら …」という意味の条件分岐です。ページが 1ページしかないなら、表示する必要がないので、今回はこんな条件を付けてみました。</p>



<p>チェックしたいテンプレートタグは以下のふたつです。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>next_posts_link</code> … 前の（古い）ページへのリンクを表示します。</li>



<li><code>previous_posts_link</code> … 次の（新しい）ページへのリンクを表示します。</li>
</ul>
</div></div>



<p>これらのテンプレートタグを使うと、<code>&lt;a&gt;</code> 要素のリンクが自動的に出力されます。また、<code>()</code> 内に表示したいテキストを指定することも可能です。</p>



<p>ここで注意したいのが、<strong><code>next_posts_link()</code> は「前の（古い）ページ」へのリンク</strong> であり、<strong><code>previous_posts_link()</code> は「次の（新しい）ページ」へのリンク</strong> になることです。名前のイメージと逆なので、少し混乱しやすいですね…。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc31">Attention</span></h5>



<p>また、これらのテンプレートタグは、<em>WordPress ループの外に記述</em>します。テンプレートタグには、WordPress ループの中で使うものと、ループの外で使うもの、どっちでも利用できるものがあるんです。はじめのうちは、このことに気付かないで、ループ内で使うべきものを、ループ外で使っちゃったりすることがよくあります。ループ内、ループ外などは、WordPress Codex を見ると掲載されているので、チェックしておきましょう。</p>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a rel="noopener" href="https://developer.wordpress.org/reference/functions/next_posts_link/" target="_blank">テンプレートタグ/next posts link</a><br><a rel="noopener" href="https://web.archive.org/web/20160412030809/http://codex.wordpress.org/Function_Reference/previous_posts_link" target="_blank">Function Reference/previous posts link</a></p>
</div>



<p>ここまでで index.php はお終いです！</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc32">index.php のポイント</span></h5>



<ul class="wp-block-list">
<li>記事の表示は WordPress ループが行っています。</li>



<li>WordPress ループの while文の中は、記事の数だけ繰り返されます。</li>



<li>全部の記事に日付を表示したいなら、<code>the_date</code> じゃなくて <code>echo get_the_date</code> と書く。</li>



<li>ページャーは WordPress ループの外に書きましょう。</li>
</ul>
</div>



<p>メインとなる <code>index.php</code> でのポイントは、やっぱり WordPress ループです。ループで繰り返される部分をキチンと把握すれば、それほど難しくないと思います！</p>



<h2 class="wp-block-heading"><span id="toc33">サイトのフッターを footer.php でデザインしよう</span></h2>



<p>やっとフッターまで来ましたね …。でも <code>footer.php</code> はとっても簡単です！今回はサイト名を Copyright と一緒に表示しているだけなので、以下のように記述します。</p>



<p><strong>フッターのデザイン</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="229" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_27_.png" alt="" class="wp-image-911" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_27_.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_27_-640x158.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_27_-768x189.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">デザインがシンプルだと、コードもシンプルになります！</figcaption></figure>



<p><strong>footer.php</strong></p>



<pre class="wp-block-code"><code>&lt;/div>
&lt;!-- /container -->
&lt;!-- footer -->
&lt;div id="footer">
&lt;p id="copyright" class="wrapper">© &lt;?php bloginfo('name'); ?> All Rights Reserved.&lt;/p>
&lt;/div>
&lt;?php wp_footer(); ?>
&lt;/body>
code
&lt;/html></code></pre>



<p>もう何度か登場した <code>bloginfo</code> でサイト名を表示します！</p>



<h3 class="wp-block-heading"><span id="toc34">忘れちゃいけない wp_footer</span></h3>



<p>header.php では wp_head() を必ず記述する必要がありましたが、同様に footer.php には必ず wp_footer() を記述 します。この関数は wp_head() と同じように、WordPress がページの表示に必要なコードを出力する役割を持っています。</p>



<p>例えば、プラグインで使用する JavaScript ファイル なども、この記述がないと適切に読み込まれません。そのため、 タグの直前に 忘れずに wp_footer() を追加 しておきましょう！</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc35">footer.php のまとめ</span></h5>



<ul class="wp-block-list">
<li><code>wp_footer</code> を必ず記述します。</li>
</ul>
</div>



<p></p>



<h2 class="wp-block-heading"><span id="toc36">記事ごとの表示レイアウトを管理する single.php を作成</span></h2>



<p>フッターまで作成したので「もう完成？」と思うかもしれませんが、実は まだ終わりではありません…。</p>



<p>ここで一度、これまで作成したテンプレートファイルを振り返り、再確認 してみましょう。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-4 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<ul class="wp-block-list">
<li>header.php</li>



<li>sidebar.php</li>



<li>footer.php</li>
</ul>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<ul class="wp-block-list">
<li>searchform.php</li>



<li>index.php</li>



<li>functions.php</li>
</ul>
</div>
</div>



<p>この中で ページの核となるのは index.php だけ ですね。他のファイルはすべて 部品 となるものばかりです。実際、index.php さえあれば、ブログの 個別記事ページ や 固定ページ も表示できます。</p>



<p>しかし、個別記事ページ では コメント一覧やコメントフォーム が必要になりますし、固定ページ はブログ記事とは異なり、カテゴリーなどを表示しない ことが一般的です。</p>



<p>そこで、個別記事を表示するテンプレートファイル と 固定ページを表示するテンプレートファイル を作成しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc37">single.phpを作ってヘッダーなどを読み込む</span></h3>



<p>まずは、ブログの個別記事を表示するテンプレートファイル である single.php を作成します。はじめに作った single.html をコピーし、テーマフォルダに single.php という名前で保存しましょう。その後、index.php と同じように、ファイルを分割していきます。</p>



<p>ただし、すでに header.php、sidebar.php、footer.php は作成済みなので、single.php ではこれらの部分を削除し、インクルードタグで読み込むだけでOK です。</p>



<p>最初のうちは 「なぜファイルを分割するの？」 と思うかもしれませんが、このように 共通部分を「部品」として管理 しておけば、複数のテンプレートファイルを作成するときに 効率よく使い回せる からなんですね！</p>



<p>各パーツを読み込む インクルードタグ は、以下の通りでしたね。</p>



<p><strong>各パーツを読み込むインクルードタグ（おさらい）</strong></p>



<ul class="wp-block-list">
<li>ヘッダー部分の読み込み … <code>get_header</code></li>



<li>サイドバー部分の読み込み … <code>get_sidebar</code></li>



<li>フッターの読み込み … <code>get_footer</code></li>
</ul>



<h3 class="wp-block-heading"><span id="toc38">WordPress ループを書き込む</span></h3>



<p>次に、index.php と同じように WordPress ループ を記述します。すでに index.php で作成済みなので、該当部分を コピーして single.php にペースト すれば簡単に実装できます。</p>



<p>ペーストする場所は 記事を表示する部分 なので、div#main から コメント欄までの間 になります。index.php では ページャーの前 に記述しましたが、single.php では ページャーの位置に注意が必要 です。</p>



<p>この点については後ほど説明するので、まずは以下のように WordPress ループを貼り付け ましょう。</p>



<p><strong>single.php – WordPress ループ</strong></p>



<pre class="wp-block-code"><code>&lt;?php get_header(); ?>
&lt;!-- main -->
&lt;div id="main">
&lt;?php if (have_posts()) : // WordPress ループ
while (have_posts()) : the_post(); // 繰り返し処理開始 ?>
&lt;div id="post-&lt;?php the_ID(); ?>" &lt;?php post_class(); ?>>
&lt;h2>&lt;a href="&lt;?php the_permalink(); ?>">&lt;?php echo get_the_title(); ?>&lt;/a>&lt;/h2>
&lt;p class="post-meta">
&lt;span class="post-date">&lt;?php echo get_the_date(); ?>&lt;/span>
&lt;span class="category">Category - &lt;?php the_category(', ') ?>&lt;/span>
&lt;span class="comment-num">&lt;?php comments_popup_link('Comment : 0', 'Comment : 1', 'Comments : %'); ?>&lt;/span>
&lt;/p>
&lt;?php the_content(); ?>
&lt;/div>
&lt;?php endwhile; // 繰り返し処理終了
else : // ここから記事が見つからなかった場合の処理 ?>
&lt;div class="post">
&lt;h2>記事はありません&lt;/h2>
&lt;p>お探しの記事は見つかりませんでした。&lt;/p>
&lt;/div>
&lt;?php endif; // WordPress ループ終了 ?>
&lt;!-- comment area -->
&lt;div id="comment-area">
...省略...</code></pre>



<p>ペーストするときに変更するのは一ヶ所だけです。<code>index.php</code> では下記のようになっていた部分を書き換えます。</p>



<pre class="wp-block-code"><code>the_content('続きを読む »');</code></pre>



<pre class="wp-block-code"><code>the_content();</code></pre>



<p>トップページなどでは 「続きを読む」 のリンクを表示する必要がありましたが、single.php では記事を全文表示するため、不要 です。そのため、the_content() の () 内は空にしておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc39"> タグと投稿者などを表示する</span></h3>



<p>別記事ページでは、記事の終わりに タグと投稿者名 を表示してみましょう。もちろん、記事下ではなく タイトルの下 に配置しても問題ありませんが、今回はこのレイアウトで実装します。</p>



<p>さらに、その下には 「前の記事」「次の記事」 への ページャー も追加します。</p>



<p><strong>記事の下の部分</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="300" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_28_tag-author.png" alt="" class="wp-image-912" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_28_tag-author.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_28_tag-author-640x278.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>まずはタグの表示と投稿者の表示に挑戦してみます。HTML の直書きのときは、下記のように記述していました。</p>



<p><strong>single.html – タグと投稿者の部分</strong></p>



<pre class="wp-block-code"><code>&lt;p class="footer-post-meta">
Tag : &lt;a href="#">タルト&lt;/a>, &lt;a href="#">フルーツ&lt;/a>
&lt;span class="post-author">作成者 : &lt;a href="#">高橋 のり&lt;/a>
&lt;/p></code></pre>



<p>これをテンプレートタグを使って書き直してみます。まずタグの表示です。</p>



<p><strong>single.php – タグの部分</strong></p>



<pre class="wp-block-code"><code>&lt;p class="footer-post-meta">
&lt;?php the_tags('Tag : ',', '); ?>
&lt;/p></code></pre>



<p>記事に付けられたタグを表示するには、the_tags() というテンプレートタグを記述します。() 内に &#8216;Tags : &#8216; と &#8216;, &#8216; という記述がありますが、前者は実際に表示されるタグの前に付ける文字で、後者は各タグを区切るための文字です。これらの部分は自由に変更できるので、好みに合わせてカスタマイズしてください。また、the_tags() は、記事にタグが設定されていない場合は何も表示されません。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>the_tags</code> … 記事のタグを表示します。</li>
</ul>
</div></div>



<p>タグに続いて、<em>投稿者</em>を表示してみます。WordPress ループ内で投稿者の名前を表示するには、<code>the_author</code> というテンプレートタグを記述します。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>the_author</code> … 投稿者の名前を表示します。</li>
</ul>
</div></div>



<p>でもこの投稿者名をクリックしたら、その投稿者が今まで書いた記事のページ（投稿者アーカイブ）を表示するようにしたいので、下記のように記述します。</p>



<p><strong>single.php – 投稿者の部分</strong></p>



<pre class="wp-block-code"><code>&lt;span class="post-author">作成者 : &lt;a href="&lt;?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>">&lt;?php the_author(); ?>&lt;/a>&lt;/span></code></pre>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>get_author_posts_url</code> … 投稿者ページの URL を取得します。</li>



<li><code>get_the_author_meta</code> … いろいろな投稿者情報を取得します。</li>
</ul>
</div></div>



<p>これで 投稿者ページへのリンク付き で表示できるようになりました。</p>



<p>しかし、ひとりで運営しているブログであれば 投稿者の表示は不要 かもしれません。そこで、「複数の投稿者がいる場合のみ表示する」という条件をつけて制御します。</p>



<p>この場合、if ( is_multi_author() ): という条件分岐を使えばOKです。これで、複数の投稿者がいるときだけ表示されるようになります。</p>



<p>すべてまとめると、以下のようなコードになります。記述場所は WordPress ループの中 なので、その点にも注意してくださいね！</p>



<p><strong>single.php</strong></p>



<pre class="wp-block-code"><code>&lt;?php if (have_posts()) : // WordPress ループ
while (have_posts()) : the_post(); // 繰り返し処理開始 ?>
&lt;div id="post-&lt;?php the_ID(); ?>" &lt;?php post_class(); ?>>
...ここに記事のタイトルなど...省略...
&lt;?php the_content(); ?>
&lt;p class="footer-post-meta">
&lt;?php the_tags('Tag : ',', '); ?>
&lt;?php if ( is_multi_author() ): ?>
&lt;span class="post-author">作成者 : &lt;a href="&lt;?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>">&lt;?php the_author(); ?>&lt;/a>&lt;/span>
&lt;?php endif; ?>
&lt;/p>
&lt;/div>
&lt;?php endwhile; // ここまでが繰り返し処理
else : ...省略...</code></pre>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a href="https://developer.wordpress.org/reference/functions/the_tags/" data-type="link" data-id="https://developer.wordpress.org/reference/functions/the_tags/">テンプレートタグ/the tags</a><br><a href="https://developer.wordpress.org/reference/functions/the_author/">テンプレートタグ/the author</a><br><a href="https://developer.wordpress.org/reference/functions/get_author_posts_url/">Function Reference/get author posts url</a><br><a href="https://developer.wordpress.org/reference/functions/get_the_author_meta/">テンプレートタグ/the author meta</a></p>
</div>



<h3 class="wp-block-heading"><span id="toc40">前の記事、次の記事へのリンクを表示する</span></h3>



<p>index.php では、記事が多くなったときに 「前のページ」「次のページ」 というページャーを WordPress ループの外 に設置しました。</p>



<p>一方、single.php では 「前の記事」「次の記事」 というページャーを追加します。ただし、注意すべきポイントがあります。index.php のときは ループの外 に記述しましたが、single.php では ループの中に記述する必要がある という点です。</p>



<p>この違いを理解したうえで、適切な場所に記述しましょう。使用するテンプレートタグは以下の通りです。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>previous_post_link</code> … ひとつ前の（古い）記事のリンクを表示します。</li>



<li><code>next_post_link</code> … 次の（新しい）記事のリンクを表示します。</li>
</ul>
</div></div>



<p>index.php で使用したテンプレートタグは previous_posts_link() のように 複数形 でしたが、今回の single.php では 複数形ではない ことに注意してください。これはまったく別のテンプレートタグなので、混同しないようにしましょう。</p>



<p>さて、直書きした HTML では、ページャー部分は以下のようにマークアップされています。</p>



<p><strong>single.php – ページャー部分の HTML</strong></p>



<pre class="wp-block-code"><code>&lt;!-- post navigation -->
&lt;div class="navigation">
&lt;div class="alignleft">
&lt;a href="#">« Hello world!&lt;/a>
&lt;/div>
&lt;div class="alignright">
&lt;a href="#">生チョコレートケーキ »&lt;/a>
&lt;/div>
&lt;/div>
&lt;!-- /post navigation --></code></pre>



<p>これをさっきのテンプレートタグを使って書き直すと …。</p>



<p><strong>single.php – ページャー部分</strong></p>



<pre class="wp-block-code"><code>&lt;!-- post navigation -->
&lt;div class="navigation">
&lt;?php if( get_previous_post() ): ?>
&lt;div class="alignleft">&lt;?php previous_post_link('%link', '« %title'); ?>&lt;/div>
&lt;?php endif;
if( get_next_post() ): ?>
&lt;div class="alignright">&lt;?php next_post_link('%link', '%title »'); ?>&lt;/div>
&lt;?php endif; ?>
&lt;/div>
&lt;!-- /post navigation --></code></pre>



<p>途中で if( get_previous_post() ): や if( get_next_post() ): を使い、「前の記事がある場合にのみ表示する」「次の記事がある場合にのみ表示する」 という条件を加えています。そのうえで、previous_post_link() と next_post_link() を使って 「前の記事」「次の記事」 へのリンクを表示しています。</p>



<p>記述する場所は、先ほど追加したタグや投稿者名の次 になります。</p>



<p><strong>single.php（一部）</strong></p>



<pre class="wp-block-code"><code>&lt;?php if (have_posts()) : // WordPress ループ
while (have_posts()) : the_post(); // 繰り返し処理開始 ?>
&lt;div id="post-&lt;?php the_ID(); ?>" &lt;?php post_class(); ?>>
...ここに記事のタイトルなど...省略 ...
&lt;?php the_content(); ?>
&lt;p class="footer-post-meta">
...ここにタグ、投稿者名など...省略 ...
&lt;/p>
&lt;/div>
&lt;!-- post navigation -->
&lt;div class="navigation">
&lt;?php if( get_previous_post() ): ?>
&lt;div class="alignleft">&lt;?php previous_post_link('%link', '« %title'); ?>&lt;/div>
&lt;?php endif;
if( get_next_post() ): ?>
&lt;div class="alignright">&lt;?php next_post_link('%link', '%title »'); ?>&lt;/div>
&lt;?php endif; ?>
&lt;/div>
&lt;!-- /post navigation -->
&lt;?php endwhile; // 繰り返し処理終了
else : ...省略...</code></pre>



<p>WordPress ループ内が <code>index.php</code> に比べるととても長くなりました。これも <code>single.php</code> の特徴ですね！</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>WordPress Codex<br><a rel="noopener" href="https://developer.wordpress.org/reference/functions/previous_post_link/" data-type="link" data-id="https://developer.wordpress.org/reference/functions/previous_post_link/" target="_blank">テンプレートタグ/previous post link</a><br><a rel="noopener" href="https://developer.wordpress.org/reference/functions/next_post_link/" data-type="link" data-id="https://developer.wordpress.org/reference/functions/next_post_link/" target="_blank">テンプレートタグ/next post link</a></p>
</div>



<h2 class="wp-block-heading"><span id="toc41">コメント機能を追加し、ユーザーの声を反映しよう</span></h2>



<p>ブログの個別記事には、通常コメントに関する部分を表示します。<em>コメント一覧</em>と、コメントを投稿するための<em>フォーム</em>です。まずはコメント一覧の表示の仕方から見ていきます。</p>



<h3 class="wp-block-heading"><span id="toc42">コメント一覧の表示</span></h3>



<p>まずは コメント一覧 を表示していきましょう。コメントの一覧を表示するのはとても簡単です！</p>



<p>wp_list_comments() というテンプレートタグを 1行追加するだけ で、 タグを使ってコメントをリスト表示してくれます。</p>



<p>コメント一覧</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="368" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_29_comments.png" alt="" class="wp-image-913" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_29_comments.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_29_comments-640x341.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>もちろん、アバターの表示・非表示の切り替えや、返信コメントのスレッド化（入れ子リストでの表示）などは、管理画面の「設定 → ディスカッション」 の設定が反映されます。</p>



<p>それでは、実際にコメント一覧を表示させてみましょう。今回は、HTML を直接書くのは省略し、いきなりテンプレートタグを記述 してみます。</p>



<p><strong>WordPress Code</strong></p>



<pre class="wp-block-code"><code>&lt;div id="comment-area">
&lt;?php if( have_comments() ): // コメントがあったら ?>
&lt;h3 id="comments">Comment&lt;/h3>
&lt;ol class="commets-list">
&lt;?php wp_list_comments( 'avatar_size=55' ); ?>
&lt;/ol>
&lt;?php endif; ?>
&lt;/div></code></pre>



<p>今回は、全体を div#comment-area で囲んでみました。その中に、if(have_comments()): という条件を加えています。これは 「コメントがある場合のみ表示する」 という条件分岐になっています。その後、&lt;h3>タグを使って見出しを追加しました。</p>



<p>ここで注意したいのが、#comments という ID です。これは、トップページなどから #（ハッシュ）付きのリンク でコメントセクションに直接移動できるようにするためのものです。そのため、見出しなどに 必ず id=&#8221;comments&#8221; を設定 しておきましょう。</p>



<p>上記のコードの中で、実際に コメントを表示している部分 が以下の箇所になります。</p>



<pre class="wp-block-code"><code>&lt;ol class="commets-list">
&lt;?php wp_list_comments( 'avatar_size=55' ); ?>
&lt;/ol></code></pre>



<p>wp_list_comments() は、&lt;li>要素を使ってコメントを表示するため、&lt;ul> や &lt;ol> で囲むのを忘れないようにしましょう。これを忘れると、適切なリスト構造にならず、デザインが崩れる可能性があります。</p>



<p>また、wp_list_comments(&#8216;avatar_size=55&#8217;) と記述すると、アバターのサイズを指定 できます。この場合、アバター画像は 55px × 55px の大きさで表示されます。ただし、これは 管理画面の「ディスカッション設定」でアバターを「表示」にしている場合のみ有効 です。</p>



<h4 class="wp-block-heading"><span id="toc43">comments.php を作る</span></h4>



<p>これで コメント一覧の部分は完成 しましたが、single.php には直接記述しません。コメント一覧は部品化 して、comments.php という別のテンプレートファイルとして管理します。</p>



<p>まず、新しく comments.php を作成し、先ほどのコードを書き込んだら、テーマフォルダ内に保存 しましょう。</p>



<p>次に、single.php から comments.php を読み込む 記述を追加します。これにはcomments_template() というテンプレートタグを使用します。</p>



<p>記述する場所は WordPress ループの中 です。先ほど作成した 「前の記事」「次の記事」へのリンクの下に追加しましょう。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">INCLUDE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>comments_template</code> … comments.php を読み込む</li>
</ul>
</div></div>



<p><strong>single.php – WordPress ループ</strong></p>



<pre class="wp-block-code"><code>&lt;?php if (have_posts()) : // WordPress ループ
while (have_posts()) : the_post(); // 繰り返し処理開始 ?>
&lt;div id="post-&lt;?php the_ID(); ?>" &lt;?php post_class(); ?>>
...タイトルやコンテンツなど（省略）...
&lt;!-- post navigation -->
&lt;div class="navigation">
...「前の記事」「次の記事」へのリンク（省略）...
&lt;/div>
&lt;!-- /post navigation -->
&lt;?php comments_template(); ?>
&lt;?php endwhile; // 繰り返し処理終了
else : ...省略...</code></pre>



<p>これで single.php でコメント一覧を表示 できるようになりました！</p>



<p>single.php の完成まで、あと少しです。</p>



<h3 class="wp-block-heading"><span id="toc44">コメントフォームを表示しよう！</span></h3>



<p>コメント一覧の次は、コメントフォームを表示してみます。このコメントフォームも、さっきのコメント一覧と同じように、少しのコードで表示させることができるんです！</p>



<p>記述するのは、コメント一覧の下なので、comments.php に記述します。使うテンプレートタ次は コメントフォーム を表示してみましょう。コメントフォームも コメント一覧と同じく、少しのコードで簡単に表示 できます。</p>



<p>記述する場所は コメント一覧の下 なので、comments.php に追加します。使用するテンプレートタグは comment_form() です。グは comment_form というタグです。</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">TEMPLATE TAG</span></div><div class="caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><code>comment_form</code> … コメントフォームを表示します。</li>
</ul>
</div></div>



<p><strong>comments.php</strong></p>



<pre class="wp-block-code"><code>&lt;?php comment_form(); ?></code></pre>



<p>たったこれだけで、コメントフォームを表示してくれます。でもちょっとだけ工夫して、今回は下記のように書いてみました。</p>



<pre class="wp-block-code"><code>&lt;?php $args = array(
'title_reply' => 'Leave a Reply',
'label_submit' => 'Submit Comment',
);
comment_form( $args ); ?></code></pre>



<p>title_reply の部分は、コメントフォームの見出しのテキストです。label_submit は送信ボタン内のテキストを指定できます。以下が実際の表示になります！</p>



<p><strong>コメントフォームの表示</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="627" src="https://blog.takeho.com/wp-content/uploads/2025/03/comment-752_29_form.png" alt="" class="wp-image-914" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/comment-752_29_form.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/comment-752_29_form-640x582.png 640w" sizes="(max-width: 690px) 100vw, 690px" /><figcaption class="wp-element-caption">見出しや送信ボタンのテキストも、指定した通りに表示されました。</figcaption></figure>



<p>また、コメント一覧やコメントフォームは、管理画面の <em>メニュー → 設定 → ディスカッション</em> から、細かく設定することができます。</p>



<h4 class="wp-block-heading"><span id="toc45">ディスカッション設定</span></h4>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="940" height="350" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_30_discussion.png" alt="" class="wp-image-915" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_30_discussion.png 940w, https://blog.takeho.com/wp-content/uploads/2025/03/752_30_discussion-640x238.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_30_discussion-768x286.png 768w" sizes="(max-width: 940px) 100vw, 940px" /></figure>



<p>wp_list_comments() や comment_form() を使って表示されたコメント欄は、管理画面の設定がある程度反映されます（&#8221;ある程度&#8221; の理由については後ほど説明します）。</p>



<p>例えば、「新しい投稿へのコメントを許可する」 のチェックを外すと、新しく作成した記事には コメントフォームが表示されなくなります。</p>



<h3 class="wp-block-heading"><span id="toc46">コメントフォームを移動させる comment-reply.js</span></h3>



<p>前半、header.php のところで、下記のようなコードを記述したのを覚えていますか？</p>



<pre class="wp-block-code"><code>&lt;?php if ( is_singular() ) wp_enqueue_script( "comment-reply" ); ?></code></pre>



<p>実はこのコードは、コメント欄に関係したものだったんです。WordPress のコメント欄では、「返信」というリンクをクリックすると、コメントフォームが、返信したいコメントのすぐ下に移動してきます。</p>



<p><strong>返信をクリックすると、フォームがすぐ下に移動します</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="557" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_31_reply1.png" alt="" class="wp-image-916" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_31_reply1.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_31_reply1-640x517.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>この仕組みは、WordPress に はじめから組み込まれている comment-reply.js という JavaScript によって動作しています。</p>



<p>先ほどのコードは、この comment-reply.js を 適切に読み込むための記述 だったんですね！</p>



<p>この JavaScript ファイルが読み込まれていないと、コメントフォームが正しく移動しない ので、注意が必要です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>ここまでかなり長くなってしまいましたが、<strong>次が最後のテンプレートファイルです！</strong></p>



<p>…「まだあるの？」なんて言わないでくださいねー！</p>



<h2 class="wp-block-heading"><span id="toc47">固定ページ専用の page.php を作成し、個別ページを整理</span></h2>



<p>これまでに、トップページなどを表示する index.php と ブログの個別記事を表示する single.php という、メインのテンプレート（部品ではないファイル）を作成してきました。</p>



<p>最後に、固定ページを表示する page.php を作成します。</p>



<p>とはいえ、index.php を少し変更するだけでOKです。まず、index.php をコピーして、page.php という名前でテーマフォルダ内に保存しましょう。</p>



<p>固定ページの場合、カテゴリーの表示は不要 ですし、ページの性質上 日付を表示する必要もほとんどありません。そのため、これらの部分は 丸ごと削除 します。</p>



<p>また、index.php で表示していた 「続きを読む」 のリンクも不要です。さらに、固定ページはブログのように 時系列に並ぶものではない ため、「次のページ」「前のページ」 というページャーも削除します。</p>



<p>最終的には、以下のように スッキリした構成 になります。</p>



<p><strong>page.php</strong></p>



<pre class="wp-block-code"><code>&lt;?php get_header(); ?>
&lt;!-- main -->
&lt;div id="main">
&lt;?php if (have_posts()) : // WordPress ループ
while (have_posts()) : the_post(); // 繰り返し処理開始 ?>
&lt;div id="post-&lt;?php the_ID(); ?>" &lt;?php post_class(); ?>>
&lt;h2>&lt;a href="&lt;?php the_permalink(); ?>">&lt;?php echo get_the_title(); ?>&lt;/a>&lt;/h2>
... ここにあったカテゴリーなどのコードは削除
&lt;?php the_content(); ?>
&lt;/div>
&lt;?php endwhile; // 繰り返し処理終了
else : // ここから記事が見つからなかった場合の処理 ?>
&lt;div class="post">
&lt;h2>記事はありません&lt;/h2>
&lt;p>お探しの記事は見つかりませんでした。&lt;/p>
&lt;/div>
&lt;?php endif; ?>
... ここにあったページャーのコードは削除
&lt;/div>
&lt;!-- /main -->
&lt;?php get_sidebar(); ?>
&lt;?php get_footer(); ?></code></pre>



<p>実際に表示するのは、ページのタイトルとコンテンツのみ ですね！ ただし、固定ページでも コメントを受け付ける 設定にしたい場合は、WordPress ループ内に comments_template() を記述 し、comments.php を読み込めばOKです。</p>



<p>このように コメント欄を部品化 しておけば、さまざまなテンプレートファイルで簡単に利用できます。これが、comments.php を別ファイルにしていた理由 なんですね！</p>



<p>また、WordPress ループの中にある div タグには post_class() というテンプレートタグが付いています。これは WordPress が自動的に適切なクラスを付与 してくれるものです。</p>



<p>以前にも説明しましたが、ブログ記事の場合は post クラス が付き、固定ページの場合は page クラス が付きます。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc48">page.php のまとめ</span></h5>



<ul class="wp-block-list">
<li>index.php をコピーすれば楽ちん！</li>



<li>カテゴリーや日付など削除します。</li>



<li>ページャーも必要ないですね！</li>



<li>コメント欄を付けるなら、comments.php を読みこめば OK！</li>
</ul>
</div>



<h2 class="wp-block-heading"><span id="toc49">カスタムメニューを導入し、柔軟なナビゲーションを実現</span></h2>



<p>サイトのメインナビゲーション ですが、現状では 作成した固定ページがただ並んでいるだけ です。せっかくなので、カスタムメニューの機能を有効化 しておきましょう。</p>



<p>カスタムメニューとは、管理画面の「外観 → メニュー」から編集できるナビゲーションメニュー のことです。これを使えば、ページの並び順を自由に変更したり、外部リンクを追加したり できます。</p>



<p>ただし、この機能も ウィジェットと同様に、テーマ側で適切な設定をしておく必要があります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="450" src="https://blog.takeho.com/wp-content/uploads/2025/03/custom-752_32_menu.png" alt="" class="wp-image-917" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/custom-752_32_menu.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/custom-752_32_menu-640x310.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/custom-752_32_menu-768x372.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">ナビゲーションを好きにカスタマイズできるのが「カスタムメニュー」！</figcaption></figure>



<p>これを利用するには、<code>functions.php</code> に下記を追加します！</p>



<p><strong>functions.php</strong></p>



<pre class="wp-block-code"><code>&lt;?php
// カスタムメニューを有効化
add_theme_support( 'menus' );
// カスタムメニューの「場所」を設定するコード
register_nav_menu( 'header-navi', 'ヘッダーのナビゲーション' );
?></code></pre>



<p>add_theme_support( &#8216;menus&#8217; ) と記述すると、カスタムメニューの機能が有効化 されます。しかし、それだけでは どこにメニューを表示するのか が決まっていません。</p>



<p>次のコードにある 「カスタムメニューの場所」 とは何でしょうか？ ここでは &#8216;header-navi&#8217;, &#8216;ヘッダーのナビゲーション&#8217; という形になっています。</p>



<p>実はこれが テーマ側とカスタムメニューを紐付ける設定 になります。ここで、もう一度 header.php を見てみましょう。</p>



<p>header.php の ナビゲーションを表示する部分 には、次のように &#8216;header-navi&#8217; と記述されていました。</p>



<p><strong>header.php</strong></p>



<pre class="wp-block-code"><code>wp_nav_menu( array ( 'theme_location' => 'header-navi' ) );</code></pre>



<p>つまり、管理画面の「テーマの場所」で「ヘッダーのナビゲーション（header-navi）」に設定したカスタムメニューを反映させる という意味になります。</p>



<p>少しややこしく感じるかもしれませんが、カスタムメニューは複数作成できる ため、フッターにも配置可能 です。そのため、どのメニューをどこに表示するかを区別するために 「テーマの場所」 が必要になるわけです。</p>



<p>カスタムメニューを 複数作成する 場合は、functions.php に以下のように 複数のメニューを登録 します。</p>



<p><strong>functions.php</strong></p>



<pre class="wp-block-code"><code>// カスタムメニューの「場所」を設定するコード
register_nav_menu( 'header-navi', 'ヘッダーのナビゲーション' );
register_nav_menu( 'footer-navi', 'フッターのナビゲーション' );</code></pre>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box not-nested-style cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label"><span class="tab-caption-box-label-text block-box-label-text box-label-text">MEMO</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>header-navi、footer-navi は任意の ID ですので、好きに書き換えてしまって OK です。</p>
</div></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-5 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="309" height="276" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_33_footer-navi.png" alt="" class="wp-image-918"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>その上でフッターのナビゲーションを表示したい箇所には、下記のように記述します。</p>
</div>
</div>



<p><strong>footer.php</strong></p>



<pre class="wp-block-code"><code>wp_nav_menu( array ( 'theme_location' => 'footer-navi' ) );</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>今回はヘッダーのナビゲーションだけ設定しています。表示を確認してみると …。</p>



<p><strong>カスタムメニューによる表示</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="240" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_34_menu.png" alt="" class="wp-image-919" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_34_menu.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_34_menu-640x165.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_34_menu-768x198.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">スタムメニューで作成したメニューが表示されました！</figcaption></figure>



<p>ここで少し注意点があります。固定ページのナビゲーションでは &lt;div> タグに .menu クラスが付いていましたが、カスタムメニューを使用すると &lt;ul> タグに .menu クラスが適用されます。そのため、スタイルシートを記述する際に気をつける必要があります。統一されていればもっと楽なのに… </p>



<p>時間はかかりましたが、これでひとまずテーマの完成です！今回作成したテンプレートファイルは、以下の9つです。</p>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc50">作成したテンプレートファイル</span></h5>



<ul class="wp-block-list">
<li>header.php … ヘッダー部分</li>



<li>sidebar.php … サイドバー部分</li>



<li>footer.php … フッター部分</li>



<li>searchform.php … 検索フォーム</li>



<li>comments.php … コメント部分</li>



<li>index.php … メインのテンプレートファイル</li>



<li>single.php … 個別記事用</li>



<li>page.php … 固定ページ用</li>



<li>functions.php … テーマ設定用</li>
</ul>
</div>



<p>かなりの数を作り込みましたね！本当にお疲れさまでした！</p>



<h2 class="wp-block-heading"><span id="toc51">仕上げに Theme Check プラグインで最終確認</span></h2>



<p>ここまで苦労して作り上げたオリジナルテーマ。問題はないはず…ですが、念のため Theme Check というプラグインを使って、不具合がないか確認してみましょう！<br>Theme Check は、テーマ内のコードをスキャンし、非推奨のタグなどを検出してくれる便利なプラグインです。</p>



<p>管理画面の 「プラグイン」 → 「新規追加」 から Theme Check をインストールし、有効化します。すると 「外観」メニュー に Theme Check という項目が追加されるはずです。</p>



<p><strong>Theme Check の画面</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="361" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_35_themecheck.png" alt="" class="wp-image-920" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_35_themecheck.png 930w, https://blog.takeho.com/wp-content/uploads/2025/03/752_35_themecheck-640x248.png 640w, https://blog.takeho.com/wp-content/uploads/2025/03/752_35_themecheck-768x298.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">ボタンを押す前に、デバッグモードをオンにする必要があるので注意！</figcaption></figure>



<p>Theme Check の画面でテーマのチェックを行う前に、WordPress のデバッグモードをオンにしておく 必要があります。<br>デバッグモードを有効にするには、WordPress をインストールしたディレクトリ内の wp-config.php をエディタで開きます。</p>



<p>すると、wp-config.php 内に以下のような記述があるはずです。</p>



<p><strong>wp-config.php</strong></p>



<pre class="wp-block-code"><code>define('WP_DEBUG', false);</code></pre>



<p>デバッグモードをオンにするには、これを <code>true</code> にします。</p>



<pre class="wp-block-code"><code>define('WP_DEBUG', true);</code></pre>



<div class="wp-block-cocoon-blocks-blank-box-1 blank-box block-box">
<h5 class="wp-block-heading"><span id="toc52">Attention</span></h5>



<p>これは WordPress のデバッグモードなので、テーマ開発が終ったら、<code>false</code>&nbsp;に戻すのを忘れないようにしてください！</p>
</div>



<p>デバッグモードを有効にしたら、Theme Check プラグイン を使ってテーマのチェックを実施しましょう！<br>テストに合格すると、以下のようなメッセージが表示されます。ただし、スクロールしていくと 「こうするともっと良くなるよ！」 というアドバイスも記載されているので、最後までしっかり確認しておきましょう。</p>



<p><strong>検査結果</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="228" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_36_result.png" alt="" class="wp-image-921" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_36_result.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_36_result-640x211.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>また、テストに合格しても 「必須項目が不足しています！」 と指摘されることがあります。こうした注意点もしっかり確認し、必要な修正を加えましょう。</p>



<p>今回も、以下の必須項目が不足していると警告されてしまいました。</p>



<p><strong>必須項目抜けの注意</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="341" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_37_required.png" alt="" class="wp-image-922" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_37_required.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_37_required-640x316.png 640w" sizes="(max-width: 690px) 100vw, 690px" /><figcaption class="wp-element-caption">必須項目 … と言っていますが、公式テーマに登録する場合を基準にしているので、個人のテーマなら、必ず必要 … というわけでもありません。</figcaption></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>それでは上から順番に見ていって、悪い？ところを直していくことにします。初めてテーマ作りをしたときに、よく見落としがちなポイントばっかりです。</p>



<h3 class="wp-block-heading"><span id="toc53">必須: コンテンツ幅が設定されていません。</span></h3>



<p>これは functions.php で、サイトのメインカラムのコンテンツ幅を指定しておくコードです。今回のテーマは、メインカラムのコンテンツ幅が 600px なので、下記のように fuこれは functions.php で、サイトのメインカラムのコンテンツ幅を指定するコードです。</p>



<p>今回のテーマでは、メインカラムのコンテンツ幅を 600px に設定するため、functions.php に次のコードを追加します。</p>



<p><strong>functions.php</strong></p>



<pre class="wp-block-code"><code>if ( ! isset( $content_width ) ) $content_width = 600;</code></pre>



<h3 class="wp-block-heading"><span id="toc54">必須: このテーマにはコメントページネーションのコードがありません。</span></h3>



<p>これはコメント一覧を複数ページに分けたときに必要な「ページャー」のこと。もうちょっと詳しく説明すると、<em>設定 → ディスカッション</em>&nbsp;には、下記のような設定がありますよね。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>1ページあたり n件のコメントを含む複数ページに分割</p>
</div>



<p>これにチェックを入れて有効にした場合は、ページャーがないと困ります。そこで&nbsp;<code>comments.php</code>&nbsp;のコメント一覧の下などに、下記のコードを追加しておきましょう。</p>



<p><strong>comments.php</strong></p>



<pre class="wp-block-code"><code>&lt;div class="comment-page-link">
&lt;?php paginate_comments_links(); ?>
&lt;/div></code></pre>



<p>&lt;a>タグ、&lt;span>タグでマークアップされたページャーが表示されます。</p>



<h3 class="wp-block-heading"><span id="toc55">必須: wp_link_pages が見つかりませんでした。</span></h3>



<p>これもページャーに関するものですねー。WordPress はひとつの記事を複数のページに分けることができますよね！</p>



<p><strong>投稿画面で &lt;!–nextpage–> と書く</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="370" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_38_nextpage.png" alt="" class="wp-image-923" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_38_nextpage.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_38_nextpage-640x343.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>投稿画面で <strong><code>&lt;!--nextpage--&gt;</code></strong> と記述すると、その部分でページが分割されます。<br>つまり、この機能を使う場合、ページ送り（ページャー）が必要になるというわけですね！</p>



<p><strong>記事を分割したときのページャー</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="690" height="294" src="https://blog.takeho.com/wp-content/uploads/2025/03/752_39_post-pager.png" alt="" class="wp-image-924" srcset="https://blog.takeho.com/wp-content/uploads/2025/03/752_39_post-pager.png 690w, https://blog.takeho.com/wp-content/uploads/2025/03/752_39_post-pager-640x273.png 640w" sizes="(max-width: 690px) 100vw, 690px" /></figure>



<p>このページャーを表示するには、WordPress ループ内に下記のように記述します。</p>



<p><strong>single.php</strong></p>



<pre class="wp-block-code"><code>&lt;?php $args = array(
'before' => '&lt;div class="page-link">',
'after' => '&lt;/div>',
'link_before' => '&lt;span>',
'link_after' => '&lt;/span>',
);
wp_link_pages($args); ?></code></pre>



<p>こうすると、&lt;a>タグと&lt;span>タグでマークアップされたページャーが表示されます。</p>



<h3 class="wp-block-heading"><span id="toc56">必須: language_attributes が見つかりませんでした。</span></h3>



<p>これは&lt;html>の開始タグに付ける lang 属性を出力するテンプレートタグです。</p>



<p> &lt;html lang=&#8221;ja&#8221;>と直書きしていましたが、下記のように書きましょう！という注意です。</p>



<pre class="wp-block-code"><code>&lt;html &lt;?php language_attributes(); ?>></code></pre>



<p>これは公式テーマとして登録する際には必須となりますが、個人のテーマなら気にすることはないので、今回はそのままにしておきます。</p>



<h3 class="wp-block-heading"><span id="toc57">必須: body_class call in body tag が見つかりませんでした。</span></h3>



<p>これは post_class と似たテンプレートタグで、各ページごとに タグへ自動的にクラスを追加 してくれるものです。<br>CSS でのスタイリングがしやすくなるため、ぜひ活用したいですね！</p>



<p>そこで、header.php の タグを、次のように書き換えました。</p>



<p><strong>header.php</strong></p>



<pre class="wp-block-code"><code>&lt;body &lt;?php body_class(); ?>></code></pre>



<h3 class="wp-block-heading"><span id="toc58">必須:add_theme_support( ‘automatic-feed-links’ ) が見つかりませんでした。</span></h3>



<p>これを忘れたら大変でした。これは <code>&lt;head></code> 内に <em>RSS2 のフィードリンク</em>を表示してくれるもの。<code>functions.php</code> に書き加えておきましょう。</p>



<p><strong>functions.php</strong></p>



<pre class="wp-block-code"><code>add_theme_support( 'automatic-feed-links' );</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>このほかにも、「WordPress 独自のクラスが style.css に記述されていません」 という注意を受けることがあるかもしれません。<br>記事内の画像のクラス alignleft や alignright について触れましたが、実は WordPress には他にも 自動で追加されるクラス があり、レイアウトに影響を与えるものもいくつか存在します。</p>



<p>WordPress のテーマ作りに慣れてくると、こうしたクラスの使い方が自然と分かるようになります（例えば、画像にキャプションをつけると、キャプションに対して特定のクラスが適用される など）。<br>最初は知らないクラスがあっても問題ありません。テーマのレイアウトが崩れなければ、大きな影響はないでしょう。</p>



<p>これで テーマチェック も無事クリアできました！</p>



<div class="wp-block-cocoon-blocks-caption-box-1 caption-box block-box not-nested-style cocoon-block-caption-box"><div class="caption-box-label block-box-label box-label"><span class="caption-box-label-text block-box-label-text box-label-text">ダウンロード</span></div><div class="caption-box-content block-box-content box-content">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-6 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>今回作成したテーマをダウンロードすることができます。ライセンスは WordPress 同様、GPL にしてあるので自由に使っていただいて構いません。</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-cocoon-blocks-button-1 button-block"><a href="" class="btn" target="_self"><a href="/wp-content/uploads/2025/03/simplesimple2.zip">Download</a></a></div>
</div>
</div>
</div></div>



<h2 class="wp-block-heading"><span id="toc59">最後に …</span></h2>



<p>今回作成したテーマは、特に追加の機能を付けていません。一方で、デフォルトテーマには カスタムヘッダー、カスタム背景、アイキャッチ画像、投稿フォーマット など、便利な機能が最初から組み込まれています。<br>こうした機能をテーマに追加するには、さらにコードを記述していく必要があります。</p>



<p>少しずつ機能を追加しながら、自分だけのテーマを作り上げていくのも WordPress テーマ開発の醍醐味 ですね！</p>



<p>また、WordPress のテンプレートタグは PHP で動作 しているため、PHP の基礎知識があると理解が深まります。<br>PHP を学びながらカスタマイズすれば、より自由度の高いオリジナルテーマ作り を楽しめるでしょう！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.takeho.com/startup-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
