<?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%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.takeho.com</link>
	<description>いわゆる自由帳ってところです。</description>
	<lastBuildDate>Tue, 09 Dec 2025 01:28:26 +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>PHP8 時代の WordPress は“知らないと壊れる”—2025 年からの互換性チェック完全ガイド</title>
		<link>https://blog.takeho.com/wordpress-in-the-php-8-era-what-you-must-know-to-avoid-breakagethe-complete-compatibility-check-guide-for-2025-onwards/</link>
					<comments>https://blog.takeho.com/wordpress-in-the-php-8-era-what-you-must-know-to-avoid-breakagethe-complete-compatibility-check-guide-for-2025-onwards/#respond</comments>
		
		<dc:creator><![CDATA[たけほ]]></dc:creator>
		<pubDate>Wed, 19 Nov 2025 11:11:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.takeho.com/?p=1435</guid>

					<description><![CDATA[2025 年現在、WordPress を運用している企業・個人サイトの多くが「いつか突然サイトが壊れる」リスクを抱えています。その最大の理由が、PHP の急速なバージョンアップと互換性問題です。特に、PHP 8.1／8. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>2025 年現在、WordPress を運用している企業・個人サイトの多くが「いつか突然サイトが壊れる」リスクを抱えています。その最大の理由が、PHP の急速なバージョンアップと互換性問題です。特に、PHP 8.1／8.2／8.3 が主流となった現在、WordPress 本体は最新 PHP に対応している一方で、テーマ・プラグイン・独自コードが追従できていないケースが圧倒的に多くなってきました。</p>



<p>そして怖いのは、これらの互換性問題の多くが“普段は気付かないまま進行している”という点です。ある日サーバ会社が PHP を 7.4 → 8.2 にバージョンアップした瞬間、管理画面が真っ白になり、企業サイトが全停止する。そのような事故が 2024〜2025 年にかけて急増しています。</p>



<p>本記事では、WordPress を安全に運用するために必須となる「PHP8 時代の互換性チェック項目」を、可能な限り丁寧に、そして実務者の視点で深く掘り下げて解説します。単に「アップデートしましょう」という表面的な話ではなく、実際の現場で何が起きているのか、そしてどう見抜き、どう改善すればよいのかを詳細に解説します。</p>



<p>この記事は、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">PHP8 で最初に起きる WordPress 障害とは？</a></li><li><a href="#toc2" tabindex="0">PHP8 時代の WordPress 互換性チェック（総合フルリスト）</a><ol><li><a href="#toc3" tabindex="0">チェック 1：WordPress バージョンは最新か？</a></li><li><a href="#toc4" tabindex="0">チェック 2：テーマが PHP8 に対応しているか？</a></li><li><a href="#toc5" tabindex="0">チェック 3：functions.php に独自の危険コードが混ざっていないか？</a></li><li><a href="#toc6" tabindex="0">チェック 4：プラグインの更新停止期間は？</a></li><li><a href="#toc7" tabindex="0">チェック 5：Deprecated（非推奨）警告が出ていないか？</a></li><li><a href="#toc8" tabindex="0">チェック 6：WP_DEBUG を有効にしたことはあるか？</a></li><li><a href="#toc9" tabindex="0">チェック 7：サイトの PHP バージョンは固定か？</a></li></ol></li><li><a href="#toc10" tabindex="0">PHP8 への移行で“確実に壊れやすいコード”とは？</a><ol><li><a href="#toc11" tabindex="0">未定義の配列アクセス</a></li><li><a href="#toc12" tabindex="0">bool が勝手に int に変換されるコード</a></li><li><a href="#toc13" tabindex="0">null を渡してしまうコード</a></li><li><a href="#toc14" tabindex="0">非推奨関数の使用</a></li><li><a href="#toc15" tabindex="0">暗黙の型変換</a></li><li><a href="#toc16" tabindex="0">WordPress の古いフック書き方</a></li></ol></li><li><a href="#toc17" tabindex="0">“壊れる前に”やるべき実務的対策</a></li><li><a href="#toc18" tabindex="0">これからの WordPress 運用に必須のマインドセット</a></li><li><a href="#toc19" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">PHP8 で最初に起きる WordPress 障害とは？</span></h2>



<p>PHP7 系から 8 系への移行で最も多いトラブルは、「非推奨関数の削除」や「型の厳格化」などによる Fatal error です。以下が代表的な症状です。</p>



<ul class="wp-block-list">
<li>サイトが真っ白になり何も表示されない</li>



<li>管理画面に入れず wp-admin が 500 error を吐く</li>



<li>ContactForm7, Elementor, WooCommerce が突然動かない</li>



<li>テーマの functions.php が致命的エラーを起こす</li>



<li>json_decode や mbstring 系の関数で Warning → Fatal へ昇格</li>



<li>旧式の MySQL API（mysql_*）が完全に削除され落ちる</li>
</ul>



<p>これらは「古いテーマ」「古いプラグイン」「独自に書かれた修正コード」が原因で起きることがほとんどです。</p>



<p>特に企業サイトでは、5 年前・10 年前に制作したテーマがいまだに稼働しているケースが多く、そこに埋め込まれた古い書き方が PHP8 で完全に非互換になっていることがよくあります。</p>



<p>PHP8 時代に突入した今、WordPress サイトを運用するなら、まずは「何が危険なのか」を具体的に知る必要があります。</p>



<h2 class="wp-block-heading"><span id="toc2">PHP8 時代の WordPress 互換性チェック（総合フルリスト）</span></h2>



<p>ここでは、PHP8 で WordPress サイトを安全に動かすために必要なチェックをすべて網羅します。これらの項目を順に確認することで、ほぼすべての互換性問題を把握できます。</p>



<h3 class="wp-block-heading"><span id="toc3">チェック 1：WordPress バージョンは最新か？</span></h3>



<p>WordPress 本体は PHP8.3 に対応しています。しかし、古い WordPress（5.9 以下）では PHP8 に対応しきれていないため、エラーが多発します。</p>



<ul class="wp-block-list">
<li>WordPress コアは <strong>最低でも 6.x 系</strong> にしておく</li>



<li>テーマ／プラグインは古い WP で作られていると互換性が低い</li>
</ul>



<p>WordPress 本体のアップデートを怠っている場合は、互換性リスクが非常に高くなります。特に 5.x 時代のテーマをそのまま使っているサイトは危険です。</p>



<h3 class="wp-block-heading"><span id="toc4">チェック 2：テーマが PHP8 に対応しているか？</span></h3>



<p>企業サイトで最も問題を起こすのが「独自テーマの古さ」です。以下を含むテーマは要注意です。</p>



<ul class="wp-block-list">
<li>2018 年以前に作られたテーマ</li>



<li>header.php や footer.php の構造が古い</li>



<li>create_function を使っている</li>



<li>get_theme_mod の使い方が古い</li>



<li>isset より先に配列参照して notice を出す</li>



<li>undefined offset が頻繁に出る</li>
</ul>



<p>テーマ開発者の中には、WordPress 5.0 以前の書き方に固執したまま、PHP 7 時代の知識で制作したケースも多く、それが PHP8 で致命的エラーを引き起こします。</p>



<h3 class="wp-block-heading"><span id="toc5">チェック 3：functions.php に独自の危険コードが混ざっていないか？</span></h3>



<p>もっとも多いのが「過去に追加されたカスタムコード」が原因の例です。制作会社が去った後、別の担当者がネット記事を見て functions.php にコードを貼り付け、それが PHP8 で動かない…というケースが大量にあります。</p>



<p>要注意コードは次の通りです。</p>



<ul class="wp-block-list">
<li>remove_filter や add_filter の古い文法</li>



<li>PHP7 の古い無名関数の書き方</li>



<li>strtotime の誤った使い方</li>



<li>date 関連の指定ミス</li>



<li>PHP8 から strict になった関数の引数不整合</li>
</ul>



<p>functions.php に知らないコードが入っている場合は、100% 精査すべきです。</p>



<h3 class="wp-block-heading"><span id="toc6">チェック 4：プラグインの更新停止期間は？</span></h3>



<p>プラグインはテーマ以上に互換性問題を引き起こします。</p>



<p>次の条件に当てはまるプラグインは危険です。</p>



<ul class="wp-block-list">
<li>1年以上アップデートされていない</li>



<li>開発者がサポートを中止している</li>



<li>評価が低く、互換性の Issue が報告されている</li>



<li>PHP8 の互換性が公式に保証されていない</li>
</ul>



<p>特に Page Builder 系（Elementor, Divi, WPBakery）は JS・PHP 両方の負荷と互換性問題を抱えがちで、インストール数が多いにも関わらず不具合報告も多い領域です。</p>



<p>WooCommerce も PHP8 でエラーが出やすく、発送設定や支払い関連プラグインとの組み合わせで Fatal になる例も頻繁にあります。</p>



<h3 class="wp-block-heading"><span id="toc7">チェック 5：Deprecated（非推奨）警告が出ていないか？</span></h3>



<p>PHP8 では「Deprecated → Warning → Fatal」への昇格が顕著です。</p>



<p>特に以下の関数は要注意です。</p>



<ul class="wp-block-list">
<li>ereg, eregi 系（完全削除）</li>



<li>split, spliti（完全削除）</li>



<li>mysql_*（完全削除）</li>



<li>create_function（非推奨から削除へ）</li>



<li>implode 引数順逆</li>



<li>mbstring 系で引数が厳格に</li>



<li>filter_var の動作が厳格化</li>
</ul>



<p>多くの WordPress 旧テーマはこれらを内部で使用しているため、PHP8 にアップデートした瞬間、エラーが噴出します。</p>



<h3 class="wp-block-heading"><span id="toc8">チェック 6：WP_DEBUG を有効にしたことはあるか？</span></h3>



<p>多くのサイトでは、「エラーが表示されていないだけ」で内部的には大量の警告が発生しています。</p>



<p>以下を wp-config.php に設定すると、PHP8 non-compat コードが判明します。</p>



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



<p>ログに Notice/Warning が出続けている場合は“未来の Fatal error 予備軍”です。</p>



<h3 class="wp-block-heading"><span id="toc9">チェック 7：サイトの PHP バージョンは固定か？</span></h3>



<p>レンタルサーバでは PHP のバージョンを手動で固定していない場合、メンテナンス時に自動的に PHP が上がることがあります。これが企業サイトにおける「突然のサイト停止」の主因です。</p>



<ul class="wp-block-list">
<li>PHP7.4 → PHP8.1（自動アップグレード）</li>



<li>古いテーマが耐えられず管理画面が真っ白</li>



<li>その結果、会社の受付フォームが停止し問い合わせゼロに…</li>
</ul>



<p>このような事故が現実に多発しています。</p>



<h2 class="wp-block-heading"><span id="toc10">PHP8 への移行で“確実に壊れやすいコード”とは？</span></h2>



<p>PHP8 は厳密な型チェックが強化されました。そのため、7 系まで“動いてしまっていた危険コード”が一斉に露出します。以下は特に壊れやすいコードです。</p>



<h3 class="wp-block-heading"><span id="toc11">未定義の配列アクセス</span></h3>



<pre class="wp-block-code"><code>$val = $arr&#91;'key'];</code></pre>



<p>PHP8 はこれを厳しく扱います。。</p>



<h3 class="wp-block-heading"><span id="toc12">bool が勝手に int に変換されるコード</span></h3>



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



<p>これは PHP8 で Fatal になります。</p>



<h3 class="wp-block-heading"><span id="toc13">null を渡してしまうコード</span></h3>



<pre class="wp-block-code"><code>count(null);   // PHP8 では Warning → Fatal の可能性</code></pre>



<p></p>



<h3 class="wp-block-heading"><span id="toc14">非推奨関数の使用</span></h3>



<pre class="wp-block-code"><code>create_function()
ereg()
split()</code></pre>



<p>すべて削除済みです。</p>



<h3 class="wp-block-heading"><span id="toc15">暗黙の型変換</span></h3>



<p>PHP7までは許容されていた曖昧な型変換が PHP8 では Fatal に繋がります。</p>



<h3 class="wp-block-heading"><span id="toc16">WordPress の古いフック書き方</span></h3>



<pre class="wp-block-code"><code>add_filter('the_content', 'myfunc', 999, 1);
function myfunc() {  // 引数ミスマッチ
}</code></pre>



<p>PHP8 では strict になり ArgumentCountError が発生しやすくなります。</p>



<h2 class="wp-block-heading"><span id="toc17">“壊れる前に”やるべき実務的対策</span></h2>



<p>ここからは WordPress サイトを健全に保つための具体的な対策を説明します。</p>



<ol class="wp-block-list">
<li><strong>本番環境のコピーで PHP8 テストを行う</strong><br>いきなり本番で PHP バージョンを上げるのは危険です。<br>かならずステージング（検証環境）でテストします。</li>



<li><strong>テーマのコードレビューを実施</strong><br>functions.php<br>single.php<br>archive.php<br>404.php<br>header/footer/sidebar<br>テンプレート階層<br>独自の shortcodes<br>独自のクラス<br>これらのファイルは数千行に及ぶ場合が多く、プロのエンジニアでも時間がかかります。特に undefined offset、deprecated warnings、引数不一致は丁寧に見直す必要があります。</li>



<li><strong>不要なプラグインを削除</strong><br>動いているから OK ではありません。<br>不要プラグインは将来の大事故要因です。</li>



<li><strong>Page Builder を使うサイトは要注意</strong><br>Elementor<br>Divi<br>WPBakery<br>これらは内部で大量の JS/PHP を利用しているため、互換性・速度・INP 指標の面で問題を起こしやすい領域です。</li>



<li><strong>クラシックテーマからブロックテーマへ移行を検討</strong><br>ブロックテーマは軽量で、PHP8 に最適化されています。企業サイトでは段階移行が現実的です。</li>



<li><strong>ログ監視を必ず行う</strong><br>wp-content/debug.log<br>server error log<br>PHP error log<br>これらに Warning や Notice がある場合、その多くが将来 Fatal に変わる可能性があります。<br></li>
</ol>



<h2 class="wp-block-heading"><span id="toc18">これからの WordPress 運用に必須のマインドセット</span></h2>



<p>2025 年の WordPress は「放置したら壊れる CMS」です。<br>しかし、「正しく向き合えば非常に安定し、高速で、安全な CMS」でもあります。</p>



<p>大切なのは、</p>



<ul class="wp-block-list">
<li>古いテーマやプラグインを延命しない</li>



<li>PHP バージョンアップに備えた準備を怠らない</li>



<li>ブロックテーマやヘッドレス構成など新しい概念を理解する</li>



<li>パフォーマンス（INP 含む）を継続監視する</li>



<li>セキュリティ対策を自動化する</li>
</ul>



<p>これらを徹底することです。</p>



<h2 class="wp-block-heading"><span id="toc19">まとめ</span></h2>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1280" height="853" src="https://blog.takeho.com/wp-content/uploads/2025/11/8934573-1280x853.png" alt="" class="wp-image-1441" srcset="https://blog.takeho.com/wp-content/uploads/2025/11/8934573-1280x853.png 1280w, https://blog.takeho.com/wp-content/uploads/2025/11/8934573-640x427.png 640w, https://blog.takeho.com/wp-content/uploads/2025/11/8934573-768x512.png 768w, https://blog.takeho.com/wp-content/uploads/2025/11/8934573.png 1536w" sizes="(max-width: 1280px) 100vw, 1280px" /></figure>



<p>PHP8 時代の WordPress は、多くのサイトで“互換性崩壊”のリスクを抱えています。しかし正しい手順でチェックを行えば、その多くは事前に痛みなく解決できます。</p>



<p>WordPress は進化している一方で“古い資産と未来技術の間のギャップ”が大きくなり続けています。このギャップを理解し、計画的にテーマとプラグインの見直しを進めることが、2025 年以降の WordPress 運用において最も重要な要素です。</p>



<p>もしあなたのサイトが現在 PHP8 移行に不安を感じているなら、今回のチェックリストを順に確認し、ひとつずつ解決していくことで、将来の大きなトラブルを未然に防ぐことができます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.takeho.com/wordpress-in-the-php-8-era-what-you-must-know-to-avoid-breakagethe-complete-compatibility-check-guide-for-2025-onwards/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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-4"><label class="toc-title" for="toc-checkbox-4">目次</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 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 loading="lazy" 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>
		<item>
		<title>このブログサイトで活躍するWordPressプラグインたち</title>
		<link>https://blog.takeho.com/wordpress-plugins-that-are-active-on-this-blog-site/</link>
					<comments>https://blog.takeho.com/wordpress-plugins-that-are-active-on-this-blog-site/#respond</comments>
		
		<dc:creator><![CDATA[たけほ]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 13:30:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.takeho.com/?p=650</guid>

					<description><![CDATA[WordPressを運営する上で、プラグインの選定はとても重要です。サイトの利便性やパフォーマンスを大きく左右し、訪問者の体験を劇的に向上させることができます。 「たけほのへなちょこ台帳」でも、より快適な運営を実現するた [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>WordPressを運営する上で、プラグインの選定はとても重要です。サイトの利便性やパフォーマンスを大きく左右し、訪問者の体験を劇的に向上させることができます。</p>



<p>「たけほのへなちょこ台帳」でも、より快適な運営を実現するために、選び抜かれたプラグインを駆使しています。今回は、サイト運営の裏側を支える強力なプラグインたちを詳しく紹介していきます。</p>



<h2 class="wp-block-heading">ページの読み込み速度を加速する「Autoptimize」</h2>





<a rel="noopener" href="https://ja.wordpress.org/plugins/autoptimize" title="Autoptimize" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/autoptimize/assets/banner-772x250.jpg?rev=1315920" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Autoptimize</div><div class="blogcard-snippet external-blogcard-snippet">Autoptimize は、以下を最適化することでサイトの反応を高速にします。JavaScript、CSS、画像 (遅延読み込みを含む)、HTML、Google フォント、非同期 JavaScript、また邪魔な Emoji の除去など。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/autoptimize/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<p>快適な閲覧体験を提供するためには、ページの表示速度が重要です。「Autoptimize」は、CSSやJavaScriptを圧縮・最適化し、サイトのパフォーマンスを向上させるプラグイン。特にモバイルユーザーにとって、遅延のない表示は訪問の継続率を高める鍵となるため、非常に頼れるツールです。</p>



<h2 class="wp-block-heading">シンプルで高機能なお問い合わせフォーム「Contact Form 7」</h2>





<a rel="noopener" href="https://ja.wordpress.org/plugins/contact-form-7" title="Contact Form 7" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/contact-form-7/assets/banner-772x250.png?rev=880427" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Contact Form 7</div><div class="blogcard-snippet external-blogcard-snippet">お問い合わせフォームプラグイン。シンプル、でも柔軟。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/contact-form-7/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<p>読者とのコミュニケーションをスムーズにするために使用しているのが「Contact Form 7」。フォームのカスタマイズ性が高く、簡単に設置できるのが魅力です。問い合わせ内容を細かく設定できるため、読者とのやり取りを円滑にする役割を果たしています。</p>



<h2 class="wp-block-heading">テーマのカスタマイズを効率化する「What The File」</h2>





<a rel="noopener" href="https://ja.wordpress.org/plugins/what-the-file" title="What The File" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/what-the-file/assets/banner-772x250.jpg?rev=3465249" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">What The File</div><div class="blogcard-snippet external-blogcard-snippet">What The File は、あなたが現在表示しているページに使用されているテンプレートファイルを見つけるために最適なツールです！</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/what-the-file/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<p>テーマファイルのカスタマイズ時に「どのファイルを編集すればいいのか？」と迷うことはありませんか？そんな悩みを解決してくれるのが「What The File」。現在表示しているページがどのテンプレートを使用しているかを簡単に確認できるので、カスタマイズ作業の手間を大幅に削減できます。</p>



<p></p>



<h2 class="wp-block-heading">スパムコメントを徹底ブロック！「Akismet Anti-spam」</h2>





<a rel="noopener" href="https://ja.wordpress.org/plugins/akismet" title="Akismet Anti-spam: Spam Protection" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/akismet/assets/banner-772x250.png?rev=2900731" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Akismet Anti-spam: Spam Protection</div><div class="blogcard-snippet external-blogcard-snippet">スパムのコメントやスパムをコンタクトフォームでブロックするための最善のスパム対策保護。WordPress と WooCommerce のための最も信頼されたスパム対策ソリューション。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/akismet/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<p>ブログ運営者にとって頭を悩ませるのがスパムコメント。これを防ぐために導入しているのが「Akismet Anti-spam」です。高度なスパム検出機能を持ち、機械学習を活用して悪質なコメントを自動で振り分けてくれます。手動でスパムを削除する手間が大幅に削減され、健全なコメント欄を維持するのに欠かせない存在です。</p>



<h2 class="wp-block-heading">詳細なアクセス解析を実現する「WP Statistics」</h2>





<a rel="noopener" href="https://wp-statistics.com" title="WP Statistics - The Most Popular Privacy-Friendly Analytics Plugin" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://wp-statistics.com/wp-content/uploads/2024/11/opengraph_Thumbnail_wp_statistics.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">WP Statistics - The Most Popular Privacy-Friendly Analytics Plugin</div><div class="blogcard-snippet external-blogcard-snippet">Get website traffic insights with GDPR/CCPA compliant, privacy-friendly analytics Includes visitor data, stunning graphs...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://wp-statistics.com/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">wp-statistics.com</div></div></div></div></a>




<p>サイトの運営状況を把握するために欠かせないのがアクセス解析。「WP Statistics」は、訪問者の動向を詳細に記録し、どのページが人気なのか、どのルートから流入しているのかを可視化してくれます。これにより、効果的なコンテンツ戦略を立てやすくなります。</p>



<h2 class="wp-block-heading">SEO対策に必須！「XML Sitemap Generator for Google」</h2>





<a rel="noopener" href="https://wordpress.org/plugins/google-sitemap-generator" title="XML Sitemap Generator for Google" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/google-sitemap-generator/assets/banner-772-250.png?rev=2713572" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">XML Sitemap Generator for Google</div><div class="blogcard-snippet external-blogcard-snippet">Generate multiple types of sitemaps to improve SEO and get your website indexed quickly.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://wordpress.org/plugins/google-sitemap-generator/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">wordpress.org</div></div></div></div></a>




<p>Googleの検索結果に正しくインデックスされるためには、サイトマップの作成が欠かせません。「XML Sitemap Generator for Google」は、サイト全体の構造を自動でGoogleに伝え、検索エンジン最適化を強力にサポートします。検索順位の向上を目指す上で、非常に重要なプラグインです。</p>



<h2 class="wp-block-heading">キャッシュ機能で爆速化！「WP Fastest Cache」</h2>





<a rel="noopener" href="https://www.wpfastestcache.com" title="WP Fastest Cache Premium | The Fastest WordPress Cache Plugin" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://www.wpfastestcache.com/wp-content/themes/wpfc-theme/images/og-wpfc-main.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">WP Fastest Cache Premium | The Fastest WordPress Cache Plugin</div><div class="blogcard-snippet external-blogcard-snippet">WP Fastest Cache Premium - The fastest and easiest wordpress cache plugin.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.wpfastestcache.com/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.wpfastestcache.com</div></div></div></div></a>




<p>ページの表示速度向上に絶大な効果を発揮するのが「WP Fastest Cache」。キャッシュを利用して、ページの再読み込みを最小限に抑えることで、ユーザーにストレスのない閲覧体験を提供します。Googleの評価基準でもあるサイトスピードを改善することで、SEO効果も期待できます。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>「たけほのへなちょこ台帳」では、スパム対策から表示速度の最適化、SEO向上まで、多方面に渡るプラグインを駆使して、快適なブログ運営を実現しています。</p>



<p>適切なプラグインの導入は、単なる利便性向上に留まらず、サイトの成長にも大きく貢献します。今後も最新のツールを取り入れながら、より良いサイト作りを目指していきたいと思います。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.takeho.com/wordpress-plugins-that-are-active-on-this-blog-site/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>2025年WordPressトレンド！ブロガーの“痒いところに手が届く”便利テク5選</title>
		<link>https://blog.takeho.com/wordpress-trends-in-2025-5-useful-techniques-for-bloggers-to-scratch-an-itch/</link>
					<comments>https://blog.takeho.com/wordpress-trends-in-2025-5-useful-techniques-for-bloggers-to-scratch-an-itch/#respond</comments>
		
		<dc:creator><![CDATA[たけほ]]></dc:creator>
		<pubDate>Sun, 16 Feb 2025 03:32:02 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.takeho.com/?p=644</guid>

					<description><![CDATA[WordPressを使ってブログ運営をしていると、「こんな機能があったらなぁ」「ちょっと不便だな」と感じることが多々ありますよね。そこで今回は、最新のWordPressで“痒いところに手が届く”便利なテクニック5選を紹介 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>WordPressを使ってブログ運営をしていると、「こんな機能があったらなぁ」「ちょっと不便だな」と感じることが多々ありますよね。そこで今回は、<strong>最新のWordPressで“痒いところに手が届く”便利なテクニック5選</strong>を紹介します！</p>



<h2 class="wp-block-heading">AIライティングアシスタントの活用で記事作成を効率化！</h2>



<p><strong>Jetpack AI Assistant</strong>がWordPressに統合され、記事の下書きやリライトが簡単になりました。キーワードを入力するだけで、SEOに最適化されたコンテンツを生成できるので、記事作成の時間を大幅に短縮できます。</p>



<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">おすすめ活用法</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>記事の構成を考えるのが苦手な人は、**「見出しを自動生成」**させる</li>



<li><strong>リード文のアイデア</strong>をAIに提案させる</li>



<li>読みやすくリライトする</li>
</ul>
</div></div>





<a rel="noopener" href="https://jetpack.com/ja/ai" title="AI Assistant" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://jetpackme.files.wordpress.com/2024/03/hero-ai-2x.webp?w=982" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">AI Assistant</div><div class="blogcard-snippet external-blogcard-snippet">Jetpack AI Assistant WordPress 向けの一番パワフルな AI ツール アイデアをあ…</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://jetpack.com/ja/ai/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">jetpack.com</div></div></div></div></a>




<h2 class="wp-block-heading">「足りない機能を補える」新エディタ拡張機能</h2>



<p>WordPressのブロックエディタ（Gutenberg）は進化を続けていますが、「もう少しこうしたい…！」という痒い部分がありますよね。最新のプラグイン「<strong>Spectra 2.0</strong>」を使えば、便利なブロックが追加され、デザインの自由度がアップします。</p>



<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">主な機能</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><strong>高機能ボタン</strong><br>ホバー時のアニメーションやシャドウ効果を追加</li>



<li><strong>リッチテキスト</strong><br>一部のテキストだけ色を変えたり、アニメーションを付けられる</li>



<li><strong>投稿リスト</strong><br>カテゴリごとに整理して記事一覧を表示できる</li>
</ul>
</div></div>



<p>「ブロックエディタが物足りない！」と感じている人には、<strong>必須級のプラグイン</strong>です。</p>





<a rel="noopener" href="https://wpastra.com/updates/spectra-2-0" title="Introducing Spectra 2.0: Build incredible websites faster" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://wpastra.com/wp-content/uploads/2022/08/Introduction-Spectra-2.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Introducing Spectra 2.0: Build incredible websites faster</div><div class="blogcard-snippet external-blogcard-snippet">Unlock limitless web designing possibilities with Spectra 2.0. Get started with Spectra, and create high-quality website...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://wpastra.com/updates/spectra-2-0/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">wpastra.com</div></div></div></div></a>




<h2 class="wp-block-heading">画像圧縮＆最適化でブログの表示速度を爆速化！</h2>



<p>ブログ運営で意外と見落としがちなのが、<strong>画像の最適化</strong>。高画質な画像をアップしすぎると、サイトの表示速度が遅くなり、SEO的にも不利になります。</p>



<p>そこで活躍するのが、<strong>Imagify</strong>や<strong>EWWW Image Optimizer</strong>といった最新の画像圧縮プラグイン！</p>



<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">おすすめの設定</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><strong>WebP形式</strong>に変換して、より軽量な画像フォーマットにする</li>



<li><strong>アップロード時に自動圧縮</strong>する設定をONにする</li>



<li><strong>一括最適化機能</strong>で過去の画像も最適化</li>
</ul>
</div></div>



<p>「ブログの表示が遅いな…」と思ったら、<strong>まずは画像圧縮を見直しましょう！</strong></p>





<a rel="noopener" href="https://imagify.io/wordpress" title="Imagify - WordPress Image Optimizer Plugin" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://c7e426ce.delivery.rocketcdn.me/wp-content/uploads/2023/10/bulk-wordpress.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Imagify - WordPress Image Optimizer Plugin</div><div class="blogcard-snippet external-blogcard-snippet">Use Imagify on your WordPress website with our plugin and make your images lighter right away.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://imagify.io/wordpress/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">imagify.io</div></div></div></div></a>






<a rel="noopener" href="https://ja.wordpress.org/plugins/ewww-image-optimizer" title="EWWW Image Optimizer" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/ewww-image-optimizer/assets/banner-772x250.jpg?rev=1582276" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">EWWW Image Optimizer</div><div class="blogcard-snippet external-blogcard-snippet">Comprehensive image optimization that doesn&#039;t require a rocket science degree. Optimize images automatically for Faster ...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/ewww-image-optimizer/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<h2 class="wp-block-heading">AIが自動でアイキャッチ画像を生成！デザイン不要の神機能</h2>



<p>「アイキャッチ画像を作るのが面倒…」と思っているブロガーに朗報！最近のWordPressプラグインには、<strong>AIが自動でアイキャッチ画像を作ってくれる機能</strong>が登場しています。</p>



<p>おすすめは「<strong>Canva AI Image Generator</strong>」。</p>



<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">使い方</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>記事のタイトルやキーワードを入力すると、自動でデザインを生成</li>



<li>文字や色を微調整するだけで、プロっぽいアイキャッチが完成</li>



<li>WordPressから直接Canvaにアクセスできる</li>
</ul>
</div></div>



<p></p>



<p><strong>「アイキャッチに時間をかけずに、見栄えの良い画像を作りたい」</strong>という人には最適なツールです！</p>





<a rel="noopener" href="https://ja.wordpress.org/plugins/ai-image-generator" title="AI Image Generator – Easy image creation with AI" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/ai-image-generator/assets/banner-772x250.png?rev=2919390" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">AI Image Generator – Easy image creation with AI</div><div class="blogcard-snippet external-blogcard-snippet">Create stunning images with AI Image Generator. Use our image generator powered by OpenAI and DALL-E to produce high-qua...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/ai-image-generator/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<h2 class="wp-block-heading">SNSシェアボタンの最適化で拡散力UP！</h2>



<p>「SNSでシェアされる記事」と「されない記事」の違い、知っていますか？実は、<strong>シェアボタンの配置</strong>や<strong>見せ方</strong>を少し変えるだけで、拡散率が大幅にアップするんです！</p>



<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">おすすめプラグイン</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><strong>Shared Counts</strong><br>シンプルで軽量、表示速度が落ちない</li>



<li><strong>Monarch</strong>（Elegant Themes）:<br>デザインが豊富でカスタマイズ性が高い</li>
</ul>
</div></div>



<p><strong>シェアボタンは「目につく位置」に配置するのが鉄則！</strong> 記事の上部・下部・サイドバーなど、読者がすぐ押せる場所に設置しましょう。</p>





<a rel="noopener" href="https://sharedcountsplugin.com" title="Shared Counts" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fsharedcountsplugin.com?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Shared Counts</div><div class="blogcard-snippet external-blogcard-snippet">Social sharing buttons that look great and load fast.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://sharedcountsplugin.com/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">sharedcountsplugin.com</div></div></div></div></a>






<a rel="noopener" href="https://www.elegantthemes.com/plugins/monarch" title="Monarch Social Sharing Plugin For WordPress" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.elegantthemes.com%2Fplugins%2Fmonarch?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Monarch Social Sharing Plugin For WordPress</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.elegantthemes.com/plugins/monarch" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.elegantthemes.com</div></div></div></div></a>




<h2 class="wp-block-heading">まとめ</h2>



<p>WordPressは日々進化しており、ブロガーの「ここが不便！」を解消する新機能やプラグインが続々登場しています。</p>



<ul class="wp-block-list">
<li>AIライティングで記事作成を時短！</li>



<li>エディタ拡張でデザインを簡単に！</li>



<li>画像最適化でブログの表示速度UP！</li>



<li>AIアイキャッチ生成でデザイン不要！</li>



<li>SNSシェアボタンを工夫して拡散力UP！</li>
</ul>



<p>どれも「痒いところに手が届く」ものばかりなので、ぜひ試してみてくださいね！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.takeho.com/wordpress-trends-in-2025-5-useful-techniques-for-bloggers-to-scratch-an-itch/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HybridAuthを使ってソーシャルログインを実装する</title>
		<link>https://blog.takeho.com/egoeo74ndhzhus7kni2ovfehcu5socn9/</link>
					<comments>https://blog.takeho.com/egoeo74ndhzhus7kni2ovfehcu5socn9/#respond</comments>
		
		<dc:creator><![CDATA[たけほ]]></dc:creator>
		<pubDate>Sat, 26 Oct 2024 16:09:00 +0000</pubDate>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.takeho.com/?p=499</guid>

					<description><![CDATA[「HybridIgniter」は、CodeIgniterにOAuth認証やソーシャルログイン機能を追加するためのライブラリです。特に、FacebookやGoogle、TwitterなどのSNSを使用してユーザー認証を行う [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>「HybridIgniter」は、CodeIgniterにOAuth認証やソーシャルログイン機能を追加するためのライブラリです。特に、FacebookやGoogle、TwitterなどのSNSを使用してユーザー認証を行う場合に便利です。以下は、HybridIgniterをCodeIgniterに組み込む手順と基本的な使い方です。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6"><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">インストールと設定</a><ol><li><a href="#toc2" tabindex="0">ダウンロードとインストール</a></li><li><a href="#toc3" tabindex="0">HybridAuthライブラリのダウンロード</a></li><li><a href="#toc4" tabindex="0">設定ファイルの作成</a></li><li><a href="#toc5" tabindex="0">コントローラーの作成</a></li><li><a href="#toc6" tabindex="0">ルーティングの設定</a></li></ol></li><li><a href="#toc7" tabindex="0">利用方法</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">インストールと設定</span></h2>



<h3 class="wp-block-heading"><span id="toc2">ダウンロードとインストール</span></h3>



<p>「HybridIgniter」ライブラリをダウンロードし、CodeIgniterの<code>application/libraries/</code>ディレクトリに配置します。</p>



<h3 class="wp-block-heading"><span id="toc3">HybridAuthライブラリのダウンロード</span></h3>



<p>HybridAuthの公式リポジトリから<a rel="noopener" href="https://github.com/hybridauth/hybridauth" target="_blank">HybridAuth</a>をダウンロードし、<code>application/third_party/HybridAuth/</code>に設置します。</p>



<h3 class="wp-block-heading"><span id="toc4">設定ファイルの作成</span></h3>



<p><code><strong>application/config/</strong></code>に<code><strong>hybridauthlib.php</strong></code>という設定ファイルを作成し、以下のように設定します。</p>



<pre class="wp-block-code"><code>$config&#91;'hybridauth'] = &#91;
    "base_url" => base_url("hauth/endpoint"),
    "providers" => &#91;
        "Google" => &#91;
            "enabled" => true,
            "keys" => &#91;"id" => "YOUR_GOOGLE_CLIENT_ID", "secret" => "YOUR_GOOGLE_CLIENT_SECRET"],
        ],
        "Facebook" => &#91;
            "enabled" => true,
            "keys" => &#91;"id" => "YOUR_FACEBOOK_APP_ID", "secret" => "YOUR_FACEBOOK_APP_SECRET"],
        ],
        "Twitter" => &#91;
            "enabled" => true,
            "keys" => &#91;"key" => "YOUR_TWITTER_CONSUMER_KEY", "secret" => "YOUR_TWITTER_CONSUMER_SECRET"],
        ],
    ],
];
</code></pre>



<p>各プロバイダー（Google、Facebook、Twitterなど）のクライアントIDやシークレットを入力します。</p>



<h3 class="wp-block-heading"><span id="toc5">コントローラーの作成</span></h3>



<p><code><strong>application/controllers/Hauth.php</strong></code>というコントローラーを作成し、以下のように認証の処理を実装します。</p>



<pre class="wp-block-code"><code>&lt;?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Hauth extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('hybridauthlib');
    }

    public function login($provider) {
        try {
            $service = $this->hybridauthlib->authenticate($provider);
            if ($service->isUserConnected()) {
                $userProfile = $service->getUserProfile();
                // ユーザーデータの取得と保存処理
                print_r($userProfile);
            }
        } catch(Exception $e) {
            show_error($e->getMessage());
        }
    }

    public function endpoint() {
        $this->hybridauthlib->process();
    }
}
</code></pre>



<p><code>login</code>メソッドで認証プロバイダ（Google、Facebookなど）を指定し、ユーザー認証を行います。</p>



<h3 class="wp-block-heading"><span id="toc6">ルーティングの設定</span></h3>



<p><code><strong>application/config/routes.php</strong></code>に、HybridAuthのエンドポイントとログインパスを追加します。</p>



<pre class="wp-block-code"><code>$route&#91;'hauth/(:any)'] = 'hauth/$1';</code></pre>



<h2 class="wp-block-heading"><span id="toc7">利用方法</span></h2>



<p>認証プロバイダーのURLにアクセスすることで、ユーザー認証を開始できます。</p>



<pre class="wp-block-code"><code>https:&#47;&#47;example.com/hauth/login/Google</code></pre>



<p>認証後、ユーザーのプロフィール情報が<code>$userProfile</code>に格納されます。これを使って、ユーザーのデータを取得したり、ユーザー情報をデータベースに保存することができます。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label"><span class="label-box-label-text block-box-label-text box-label-text">注意点</span></div><div class="label-box-content block-box-content box-content">
<p>各プロバイダーのAPI設定で、リダイレクトURIをCodeIgniterのエンドポイント（例：<code>https://example.com/hauth/endpoint</code>）に設定する必要があります。</p>
</div></div>





<a rel="noopener" href="https://github.com/hybridauth/hybridauth" title="GitHub - hybridauth/hybridauth: Open source social sign on PHP Library. HybridAuth goal is to act as an abstract api between your application and various social apis and identities providers such as Facebook, Twitter and Google." class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://opengraph.githubassets.com/b8254d163efdebf4cd80c9a922a38a6a0b7d345243a3db0a7d168706fa9bfaf7/hybridauth/hybridauth" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">GitHub - hybridauth/hybridauth: Open source social sign on PHP Library. HybridAuth goal is to act as an abstract api between your application and various social apis and identities providers such as Facebook, Twitter and Google.</div><div class="blogcard-snippet external-blogcard-snippet">Open source social sign on PHP Library. HybridAuth goal is to act as an abstract api between your application and variou...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/hybridauth/hybridauth" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>

]]></content:encoded>
					
					<wfw:commentRss>https://blog.takeho.com/egoeo74ndhzhus7kni2ovfehcu5socn9/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPressの基礎体力を高めるプラグインの紹介</title>
		<link>https://blog.takeho.com/0sv937742ik1pbrzvtqekwibc2eutsux/</link>
					<comments>https://blog.takeho.com/0sv937742ik1pbrzvtqekwibc2eutsux/#respond</comments>
		
		<dc:creator><![CDATA[たけほ]]></dc:creator>
		<pubDate>Tue, 17 Sep 2024 09:42:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://blog.takeho.com/?p=362</guid>

					<description><![CDATA[WordPressでブログを運営するにあたって、ただ記事を投稿するだけではなく、サイトの基礎体力を強化することが重要です。基礎体力とは、SEO対策、セキュリティ、パフォーマンスの最適化、バックアップ管理、そしてスパム対策 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>WordPressでブログを運営するにあたって、ただ記事を投稿するだけではなく、サイトの基礎体力を強化することが重要です。基礎体力とは、SEO対策、セキュリティ、パフォーマンスの最適化、バックアップ管理、そしてスパム対策など、サイト運営の根幹を支える要素のことを指します。</p>



<p>ブログが成長して多くの訪問者を迎え入れるようになると、これらの要素がしっかりしているかどうかが、サイトの成功に大きな影響を与えます。今回は、WordPressの基礎体力を高めるために必須とも言える、無料で使えるプラグインを5つご紹介します。それぞれが特定の分野を強化し、安定したブログ運営をサポートしてくれるものです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8"><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">プラグインの紹介</a><ol><li><a href="#toc2" tabindex="0">Yoast SEO</a></li><li><a href="#toc3" tabindex="0">Wordfence Security</a></li><li><a href="#toc4" tabindex="0">UpdraftPlus</a></li><li><a href="#toc5" tabindex="0">WP Super Cache</a></li><li><a href="#toc6" tabindex="0">Akismet Anti-Spam</a></li></ol></li><li><a href="#toc7" tabindex="0">総括</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">プラグインの紹介</span></h2>



<h3 class="wp-block-heading"><span id="toc2">Yoast SEO</span></h3>



<p><strong>SEO対策を強化して、検索エンジンに強いブログに</strong></p>



<p>Yoast SEOは、WordPressの定番SEOプラグインであり、検索エンジンでのパフォーマンス向上に貢献します。記事ごとのキーワード最適化やメタデータの設定、さらにはXMLサイトマップの自動生成など、SEOの重要な要素を簡単に管理できるのが魅力です。ブログの成長には、SEO対策が欠かせません。このプラグインを活用することで、検索エンジンでの順位向上を目指しましょう。</p>





<a rel="noopener" href="https://ja.wordpress.org/plugins/wordpress-seo" title="Yoast SEO – リアルタイムガイダンスと AI 搭載の高度なSEO" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/wordpress-seo/assets/banner-772x250.png?rev=3257862" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Yoast SEO – リアルタイムガイダンスと AI 搭載の高度なSEO</div><div class="blogcard-snippet external-blogcard-snippet">リアルタイムフィードバック、スキーマ、そして明確なガイダンスでSEOを改善しましょう。AI ツール、Google ドキュメントとの連携、そして24時間365日のサポートを追加料金なしでご利用いただけるアップグレードもご用意しています。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/wordpress-seo/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<h3 class="wp-block-heading"><span id="toc3">Wordfence Security</span></h3>



<p><strong>セキュリティの守護者、サイバー攻撃からブログを守る</strong></p>



<p>セキュリティ関連のブログを運営するなら、まず自分のサイトが安全であることを示す必要があります。Wordfence Securityは、強力なファイアウォールやマルウェアスキャン機能を備えたセキュリティプラグインで、サイバー攻撃を防ぐための総合的な対策を提供します。不正アクセスのリスクを最小限に抑え、安心してブログを運営することができます。</p>





<a rel="noopener" href="https://ja.wordpress.org/plugins/wordfence" title="Wordfence Security – Firewall, Malware Scan, and Login Security" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/wordfence/assets/banner-772x250.jpg?rev=2124102" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Wordfence Security – Firewall, Malware Scan, and Login Security</div><div class="blogcard-snippet external-blogcard-snippet">ファイアウォール、マルウェアスキャナー、2要素認証、包括的なセキュリティ機能など、当社の24時間体制のチームがサポートします。Wordfence でセキュリティを最優先にしましょう。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/wordfence/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<h3 class="wp-block-heading"><span id="toc4">UpdraftPlus</span></h3>



<p><strong>サイトの生命線、定期的なバックアップで万が一に備える</strong></p>



<p>バックアップの管理は、WordPress運営において不可欠な要素です。UpdraftPlusは、簡単な操作でサイト全体をバックアップし、必要なときにはすぐに復元できるプラグインです。特にデータ損失やハッキングのリスクに備えて、定期的なバックアップを設定し、Google DriveやDropboxといったクラウドストレージに安全に保存することが可能です。万が一のトラブルにも備え、安定した運営をサポートします。</p>





<a rel="noopener" href="https://ja.wordpress.org/plugins/updraftplus" title="UpdraftPlus: WP Backup &amp; Migration Plugin" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/updraftplus/assets/banner-772x250.png?rev=1686200" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">UpdraftPlus: WP Backup & Migration Plugin</div><div class="blogcard-snippet external-blogcard-snippet">WordPress サイトを別のホストまたはドメインにバックアップ、復元、または移行します。バックアップをスケジュールするか、手動で実行します。数分で移行できます。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/updraftplus/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<h3 class="wp-block-heading"><span id="toc5">WP Super Cache</span></h3>



<p><strong>パフォーマンス向上、速いページ表示でユーザー体験を向上させる</strong></p>



<p>サイトの速度は、ユーザー体験やSEOに大きな影響を与えます。WP Super Cacheは、キャッシュ機能を利用して、ページの表示速度を向上させるプラグインです。キャッシュされたHTMLファイルをサーバーに負荷をかけずに提供することで、ページの読み込み時間を大幅に短縮できます。ブログ訪問者にスムーズな体験を提供し、離脱率を下げる効果も期待できます。</p>





<a rel="noopener" href="https://ja.wordpress.org/plugins/wp-super-cache" title="WP Super Cache" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/wp-super-cache/assets/banner-772x250.png?rev=1082414" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">WP Super Cache</div><div class="blogcard-snippet external-blogcard-snippet">静的 HTML ファイルを生成する、WordPress の超高速キャッシュエンジン。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/wp-super-cache/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<h3 class="wp-block-heading"><span id="toc6">Akismet Anti-Spam</span></h3>



<p><strong>スパムを自動ブロック、クリーンなコメント欄を維持</strong></p>



<p>スパムコメントは、ブログ運営者にとって厄介な問題です。Akismet Anti-Spamは、スパムコメントを自動的に検出・ブロックしてくれるため、スパムに煩わされることなくコメント欄を管理できます。ブログが成長するにつれて、スパムコメントが増えることもあるので、このプラグインを使ってクリーンなコミュニケーションの場を提供しましょう。</p>





<a rel="noopener" href="https://ja.wordpress.org/plugins/akismet" title="Akismet Anti-spam: Spam Protection" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://ps.w.org/akismet/assets/banner-772x250.png?rev=2900731" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Akismet Anti-spam: Spam Protection</div><div class="blogcard-snippet external-blogcard-snippet">スパムのコメントやスパムをコンタクトフォームでブロックするための最善のスパム対策保護。WordPress と WooCommerce のための最も信頼されたスパム対策ソリューション。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wordpress.org/plugins/akismet/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wordpress.org</div></div></div></div></a>




<h2 class="wp-block-heading"><span id="toc7">総括</span></h2>



<p>WordPressブログの成功には、サイトの「基礎体力」を強化することが不可欠です。今回紹介した5つのプラグインは、SEO対策、セキュリティ、パフォーマンスの向上、バックアップ管理、スパム対策など、ブログ運営のあらゆる面を支えるために役立ちます。これらを導入することで、ブログが成長しても安定した運営が可能になり、訪問者にとっても信頼できるサイトとなるでしょう。</p>



<p>自分のブログに合ったプラグインを選び、まずは基盤をしっかりと固めてから、さらなる成長を目指しましょう。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.takeho.com/0sv937742ik1pbrzvtqekwibc2eutsux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>LiteSpeed Cacheプラグインに重大な脆弱性</title>
		<link>https://blog.takeho.com/critical-vulnerability-in-litespeed-cache-plugin/</link>
					<comments>https://blog.takeho.com/critical-vulnerability-in-litespeed-cache-plugin/#respond</comments>
		
		<dc:creator><![CDATA[たけほ]]></dc:creator>
		<pubDate>Mon, 26 Aug 2024 16:27:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[脆弱性]]></category>
		<guid isPermaLink="false">https://blog.takeho.com/?p=287</guid>

					<description><![CDATA[LiteSpeed Cacheプラグインは、高速化と最適化を提供する人気のWordPressプラグインですが、最近、重大な脆弱性が報告されました。この脆弱性は、攻撃者がキャッシュ機能を悪用し、特定の条件下で不正なコードを [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>LiteSpeed Cacheプラグインは、高速化と最適化を提供する人気のWordPressプラグインですが、最近、重大な脆弱性が報告されました。この脆弱性は、攻撃者がキャッシュ機能を悪用し、特定の条件下で不正なコードを実行できる可能性があるため、非常に危険です。</p>



<h2 class="wp-block-heading">脆弱性の内容</h2>



<p>脆弱性の原因は、キャッシュ処理における入力の不適切な検証にあります。攻撃者は、サイトへのアクセスを介して、キャッシュされたコンテンツに悪意のあるコードを挿入することができます。このコードが実行されると、サイトの制御が奪われ、データの盗難や改ざんが発生する可能性があります。</p>



<h3 class="wp-block-heading">事例</h3>



<p>実際の事例として、あるサイト管理者は、ユーザーがWordPressの管理者ページにアクセスする際に不審な動作が発生することに気付きました。調査の結果、LiteSpeed Cacheのキャッシュが不正なスクリプトで書き換えられており、管理者がそのスクリプトを実行してしまったため、サイトの制御が奪われ、コンテンツの変更やデータの漏洩が発生しました。</p>



<h2 class="wp-block-heading">対策方法</h2>



<ol class="wp-block-list">
<li><strong>プラグインの更新</strong><br>開発者はこの脆弱性に対応する修正パッチをリリースしています。まず、LiteSpeed Cacheプラグインを最新バージョンに更新することが最も重要です。常にプラグインを最新の状態に保つことで、既知の脆弱性からサイトを保護できます。</li>



<li><strong>キャッシュの制御</strong><br>キャッシュ設定の見直しも重要です。キャッシュに関するアクセス制御を強化し、信頼できるユーザーだけがキャッシュの操作を行えるように設定を変更してください。</li>



<li><strong>Web Application Firewall（WAF）の導入</strong><br>WAFを導入することで、悪意のあるリクエストをブロックし、脆弱性の悪用を防止できます。特に、LiteSpeedのようなキャッシュプラグインと連携することで、さらなるセキュリティが強化されます。</li>



<li><strong>定期的なセキュリティ監査</strong><br>WordPressのサイトにおいて、定期的にセキュリティ監査を行い、異常がないかを確認することが推奨されます。特にキャッシュ関連の設定やログの監視を強化し、潜在的な攻撃の痕跡を早期に発見してください。</li>
</ol>



<p>脆弱性を放置するとサイト全体に深刻な影響を与える可能性があるため、迅速な対策が求められます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.takeho.com/critical-vulnerability-in-litespeed-cache-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
