WordPressをカスタマイズするためのプログラミング

― 自分だけのサイトを作るための実践ガイド ―


第1章:はじめに

1-1. WordPressとは何か

WordPress(ワードプレス)は、ブログやWebサイトを簡単に作ることができるソフトウェアです。世界中で広く使われており、個人のブログから企業のコーポレートサイトまで、さまざまな場面で活用されています。

WordPressは「コンテンツ管理システム(CMS)」と呼ばれ、記事や画像、動画などのコンテンツをWebブラウザから管理・更新できるのが大きな特長です。専門的な知識がなくても、テーマ(見た目)を選んで、投稿を書くだけでWebサイトが作れます。

しかも、WordPressは無料で使えるオープンソースのソフトウェアです。誰でも自由に使ったり、改造したりすることができます。これが、WordPressが世界中で愛されている理由のひとつです。


1-2. カスタマイズの種類とレベル

WordPressはそのまま使っても便利ですが、自分の使いやすいように「カスタマイズ」することで、より理想に近いサイトを作ることができます。

カスタマイズには大きく分けて3つのレベルがあります。

  • レベル1:テーマやプラグインの設定で調整する
     設定画面で色やレイアウトを変更したり、必要な機能をプラグインで追加したりします。プログラミングの知識は不要です。
  • レベル2:HTMLやCSSを使って見た目を変える
     テーマのデザインを細かく調整したいときに使います。簡単なコードの読み書きが必要になります。
  • レベル3:PHPを使って機能を追加・変更する
     自分で新しい機能を作ったり、WordPressの動作を細かく制御したりします。プログラミングの知識が必要ですが、自由度はとても高くなります。

このテキストでは、初心者の方が「レベル2」や「レベル3」にチャレンジできるように、ステップを踏んでやさしく解説していきます。


1-3. プログラミングでできること

WordPressをプログラミングでカスタマイズできるようになると、次のようなことができるようになります。

  • 自分好みのテーマを作ったり、見た目を細かく調整できる
  • 不要な機能を取り除いたり、必要な機能を自作できる
  • 「お知らせ一覧」や「商品紹介」など、独自の投稿タイプを作れる
  • 投稿画面にオリジナルの入力項目(カスタムフィールド)を追加できる
  • 表示内容をユーザーによって変えるなど、柔軟な制御が可能になる

このように、WordPressのプログラミングは「できることの幅」を大きく広げてくれます。

もちろん、最初はわからないこともあると思います。でも、実際に手を動かしながら少しずつ覚えていけば、着実にレベルアップできます。

このテキストでは、「何が起きているのか」を理解しながら学べるように、一歩ずつ丁寧に解説していきます。あなたのWordPressカスタマイズの第一歩を、一緒に踏み出していきましょう。


第2章:WordPressの仕組みを知る

― カスタマイズの前に知っておきたい基本構造 ―

2-1. テーマとプラグインの役割

WordPressの見た目や機能を自由に変えられるのは、「テーマ」と「プラグイン」という仕組みがあるからです。

● テーマとは?

テーマは、Webサイトの見た目やレイアウトを決めるテンプレートの集まりです。たとえば、記事の表示スタイル、ヘッダーやフッターのデザイン、サイドバーの構成などがテーマによって決まります。

テーマはフォルダ単位で作られており、中には HTML(正確にはPHPとHTMLの組み合わせ)・CSS・画像などのファイルが入っています。

● プラグインとは?

プラグインは、WordPressに新しい機能を追加する「拡張パーツ」です。例えば、問い合わせフォーム、SEO対策、自動バックアップ機能など、標準のWordPressにはない機能をあとから追加できます。

カスタマイズでは、「見た目を変えるならテーマ」「機能を追加したいならプラグイン」と覚えておくと良いでしょう。


2-2. ファイル構成とテンプレート階層

WordPressでテーマをカスタマイズするには、「テーマフォルダの中にあるファイル」がどんな役割をしているのかを知っておく必要があります。

● よく使う主なファイル

ファイル名役割
style.cssサイト全体のデザイン(CSS)を定義。テーマの名前や情報もここに書く。
index.phpすべてのページの共通テンプレート。最終的な“予備”の役割を果たす。
header.phpヘッダー(上部)の共通パーツ。ロゴやメニューなど。
footer.phpフッター(下部)の共通パーツ。コピーライトなど。
functions.phpテーマの機能を追加・拡張するためのPHPファイル。
single.php投稿(記事)ページのテンプレート。
page.php固定ページ用のテンプレート。
archive.phpカテゴリーやタグの一覧ページに使われるテンプレート。

● テンプレート階層とは?

WordPressには「テンプレート階層」というルールがあり、ページの種類に応じて適切なテンプレートファイルが自動的に選ばれます。

例えば:

  • 記事ページなら single.php が使われる
  • 固定ページなら page.php
  • 上記がない場合は index.php が使われる

これは、「より専門的なテンプレートがあればそちらを使う」という仕組みです。このルールを理解すると、必要なテンプレートを見つけて編集しやすくなります。


2-3. 管理画面とフロントエンドの関係

WordPressには「管理画面(ダッシュボード)」と「フロントエンド(Webサイトの表示画面)」があります。

● 管理画面とは

管理画面は、ログインしてサイトを編集・設定するためのページです。投稿の作成やテーマの変更、プラグインのインストールなどをここで行います。
URLはたいてい https://あなたのサイト/wp-admin/ です。

● フロントエンドとは

フロントエンドとは、訪問者が実際に見るWebサイトのことです。投稿や固定ページ、一覧ページなどが表示されます。

● 管理画面で作った内容が、どう表示されるのか?

たとえば管理画面で記事を書いたとします。その記事は、

  • 投稿タイプが「投稿」であれば single.phpindex.php
  • 投稿のタイトルや本文などは WordPress のデータベースから取得

といった仕組みで、テンプレートファイルにデータが埋め込まれ、フロントエンドに表示されます。


まとめ:カスタマイズの出発点は「仕組みの理解」

この章では、WordPressがどのように「見た目」と「機能」を分けているのか、どのファイルがどんな役割を持っているのかを学びました。

カスタマイズは、仕組みを理解するとグッと楽になります。次の章では、いよいよテーマを自分でカスタマイズしてみましょう!


第3章:テーマのカスタマイズ

― 見た目を自分好みに変えてみよう ―

3-1. 子テーマの作成と活用

● なぜ子テーマを使うの?

WordPressのテーマはそのままでもカスタマイズできますが、直接編集するとアップデートで変更が消えてしまうリスクがあります。
そのため、元のテーマを親テーマとし、カスタマイズ用に「子テーマ(Child Theme)」を作るのが一般的です。

子テーマを使えば、親テーマのデザインや機能を引き継ぎながら、自分だけの変更を加えることができます。

● 子テーマの作り方(最低限)

  1. wp-content/themes フォルダの中に、新しいフォルダを作成(例:mytheme-child
  2. フォルダ内に style.css を作成し、以下のように記述:
/* Theme Name: My Theme Child Template: 親テーマのフォルダ名 */
  1. 必要に応じて functions.php やテンプレートファイルを追加
  2. 管理画面から「外観 > テーマ」で子テーマを有効化

3-2. HTMLとCSSでデザインを変更する

● テンプレートは「PHP + HTML」で書かれている

WordPressのテンプレートファイルは、基本的にHTMLでできています。ただし、動的な部分はPHPで書かれており、たとえば記事タイトルを表示するにはこう書きます:

<h1><?php the_title(); ?></h1>

このように、PHPの関数でデータを表示し、それをHTMLで囲んでレイアウトしています。

● CSSでデザインを整える

デザインを変えるには style.css を編集します。たとえば、記事タイトルの色を赤にしたい場合:

h1 {
  color: red;
}

CSSの基本がわかれば、フォント、余白、背景色など、自由に見た目を変えることができます。


3-3. PHPでテンプレートを編集する

● たとえば記事一覧に投稿日を追加するには?

index.phparchive.php を編集して、the_date() 関数を使えば、記事の日付を表示できます。

<p class="post-date"><?php the_date(); ?></p>

このように、PHPで用意された関数(テンプレートタグ)を使うことで、表示内容を自由にコントロールできます。

● 代表的なテンプレートタグ(一部)

関数名意味
the_title()投稿のタイトル
the_content()投稿の本文
the_excerpt()投稿の抜粋
the_permalink()投稿のURL
the_post_thumbnail()アイキャッチ画像

これらを組み合わせることで、テンプレートのカスタマイズがどんどん広がります。


3-4. テーマ関数(functions.php)の使い方

functions.php は、テーマに機能を追加するためのPHPファイルです。たとえば:

● カスタムメニューを有効化する

// テーマのセットアップ関数を定義
function mytheme_setup() {
  // 'main-menu' というスラッグで、ナビゲーションメニューを登録
  // 第二引数は管理画面で表示されるメニューの名前('メインメニュー')
  register_nav_menu('main-menu', 'メインメニュー');
}

// テーマの初期化時(after_setup_theme)に mytheme_setup 関数を実行
add_action('after_setup_theme', 'mytheme_setup');

このように、WordPressの「フック」という仕組みを使って、動作に変更を加えられます。

● 注意点

  • functions.php にエラーがあると、WordPressが動かなくなることがあります
  • 変更は少しずつ・こまめに保存・ブラウザで確認するようにしましょう

まとめ:テーマを理解すれば見た目は自由自在

この章では、テーマの基本構造から始めて、子テーマの作成、HTML・CSS・PHPを使った見た目の変更方法、そして functions.php の活用方法まで学びました。

最初は難しく感じるかもしれませんが、「どこを編集すれば何が変わるのか」を1つずつ確認しながら進めれば、必ず理解できるようになります。

次の章では、テーマではできないような「機能の追加」を実現するプラグインの開発に挑戦してみましょう


第4章:プラグイン開発の基礎

― 自分だけの機能をWordPressに追加しよう ―

4-1. プラグインの作り方

● プラグインとは何か?

プラグインとは、WordPressの機能を拡張する小さなプログラムのことです。
たとえば「お問い合わせフォーム」「アクセス解析」「スライドショー表示」など、サイトに便利な機能を追加できます。

すでに公開されているプラグインをインストールするのも便利ですが、自分で作れば「本当に必要なもの」だけを、軽くシンプルに組み込むことができます。

● 最も基本的なプラグインの作り方

  1. wp-content/plugins フォルダの中に、新しいフォルダを作成(例:my-first-plugin
  2. フォルダの中に my-first-plugin.php というファイルを作成
  3. 以下のように記述:
<?php
/*
Plugin Name: My First Plugin
Description: はじめてのプラグイン
Version: 1.0
Author: あなたの名前
*/

// ここに機能を追加していく

  1. WordPress管理画面の「プラグイン」から有効化できるようになります。

4-2. アクションフックとフィルターフック

WordPressでは「フック(Hook)」という仕組みを使って、プログラムの動作に介入できます。
主に2種類あります。

● アクションフック(add_action)

特定のタイミングで何かの処理を実行したいときに使います。

// フッター部分が出力される直前に、add_copyright 関数を実行するようフックを登録
add_action('wp_footer', 'add_copyright');

// フッターに著作権表示を出力する関数
function add_copyright() {
  // 中央揃えで著作権表示を出力
  echo '<p style="text-align:center;">© 2025 My Site</p>';
}

↑ このコードは、ページ下部(フッター)に著作権表示を追加します。

● フィルターフック(add_filter)

WordPressが出力する値を変更したいときに使います。

// 投稿やページのタイトルを表示する直前に、change_title 関数で加工するようフィルターを追加
add_filter('the_title', 'change_title');

// タイトルの先頭に「★」を追加する関数
function change_title($title) {
  return '★ ' . $title;
}

↑ 投稿タイトルの先頭に「★」をつける例です。


4-3. 管理画面への設定追加

プラグインに「設定ページ」をつければ、ユーザーが自分で値を変更できるようになります。

● 簡単な例:メニューに追加する

// 管理メニューにカスタムメニューを追加するためのフック
add_action('admin_menu', 'my_plugin_menu');

// 管理メニューに「サンプル設定」というメニュー項目を追加する関数
function my_plugin_menu() {
  // add_menu_page(
  //   ページタイトル, メニュータイトル, 権限, スラッグ, コールバック関数
  // )
  add_menu_page(
    'サンプル設定',            // ページのタイトル(ブラウザのタブなどに表示)
    'サンプル設定',            // 管理画面左メニューに表示される名前
    'manage_options',          // 表示に必要な権限(管理者のみ)
    'sample-settings',         // メニューのスラッグ(URLに使用)
    'sample_settings_page'     // メニュークリック時に呼び出される関数
  );
}

// 「サンプル設定」ページの内容を表示する関数
function sample_settings_page() {
  echo '<div class="wrap"><h1>ここに設定画面を作れます</h1></div>';
}

このコードを追加すると、管理画面のメニューに「サンプル設定」という項目が表示され、クリックすると独自の画面が開きます。

※設定値の保存などは少し難しくなるので、まずは「管理画面に何かを表示する」ところから試してみましょう。


4-4. ショートコードの作成

ショートコードを使えば、投稿や固定ページの中に「プラグインの機能」を挿入できます。

● ショートコードの例

// [greeting] というショートコードを登録し、my_greeting 関数を呼び出すよう設定
add_shortcode('greeting', 'my_greeting');

// ショートコードが使われた場所に表示する内容を返す関数
function my_greeting() {
  return '<p>こんにちは!この文章はプラグインで表示しています。</p>';
}

↑ 投稿の本文中に [greeting] と書けば、そこに挨拶文が表示されます。

ショートコードを使えば、編集画面から機能を呼び出せるのでとても便利です。


まとめ:プラグインは「自由な機能追加」の入り口

この章では、WordPressのプラグイン開発の基本を学びました。

  • プラグインはPHPファイルひとつから始められる
  • アクションやフィルターでWordPressの動作を変更できる
  • 管理画面に独自の設定画面を追加できる
  • ショートコードを作れば、投稿内に機能を組み込める

自分だけの「便利な機能」を作る第一歩として、シンプルなプラグインを試してみましょう。最初は「動いた!」という経験が何よりの励みになります。



第5章:データベースとカスタム投稿

― 自分だけの投稿タイプを作ってみよう ―

5-1. WordPressとMySQLの関係

WordPressは、記事やページの内容をデータベースに保存する仕組みになっています。
具体的には、「MySQL(マイエスキューエル)」というデータベースを使っています。

たとえば、記事のタイトルや本文、投稿日、投稿者、カテゴリー情報などはすべて、MySQLの中の「テーブル」と呼ばれる場所に記録されています。

● データベースは使っているけれど…

WordPressを使っている限り、基本的にはデータベースの中身を直接触る必要はありません。
ですが、「カスタム投稿タイプ」や「カスタムフィールド」などを使うことで、より構造的にデータを扱えるようになります。


5-2. カスタム投稿タイプの追加

● カスタム投稿タイプとは?

通常、WordPressには「投稿」「固定ページ」の2種類の投稿タイプがあります。
それに加えて、自分で独自の投稿タイプ(例:イベント・商品・レビューなど)を作れる仕組みが「カスタム投稿タイプ」です。

● 例:商品紹介用の投稿タイプ「product」を作る

// カスタム投稿タイプ「商品 (product)」を登録する関数
function create_product_post_type() {
  register_post_type('product', // 投稿タイプのスラッグ(URLなどで使われる)
    array(
      // 管理画面で使われるラベルの設定
      'labels' => array(
        'name' => '商品',           // 一覧などで使われる名前(複数形)
        'singular_name' => '商品'   // 個別アイテム名(単数形)
      ),
      'public' => true,            // 公開設定(true にするとフロントエンドからもアクセス可能)
      'has_archive' => true,       // アーカイブページを有効にする(例:/product/)
      'menu_position' => 5,        // 管理画面メニューの表示位置
      'supports' => array(         // 投稿タイプで利用できる機能
        'title',                   // タイトル入力欄を表示
        'editor',                  // 本文エディターを表示
        'thumbnail'                // アイキャッチ画像を使用可能に
      ),
      'menu_icon' => 'dashicons-cart' // 管理画面メニューのアイコン(カートアイコン)
    )
  );
}

// 'init' アクションフックで上記の関数を呼び出し、カスタム投稿タイプを登録
add_action('init', 'create_product_post_type');

↑ このコードを functions.php またはプラグインに追加すると、管理画面に「商品」というメニューが現れ、記事のように投稿できます。


5-3. カスタムフィールドとメタ情報

● カスタムフィールドとは?

投稿に追加情報(メタ情報)を持たせる機能です。
たとえば、商品投稿に「価格」や「在庫数」などの項目を加えたいときに使います。

● 標準機能として使う方法

投稿画面で「表示オプション」から「カスタムフィールド」にチェックを入れると、フィールドの追加欄が現れます。

  • 名前:price
  • 値:1980

のように入力して保存すれば、データベースにその情報が保存されます。

● 表示するにはPHPで取り出す

<?php
// 現在表示中の投稿のIDを取得し、その投稿に紐づいたカスタムフィールド「price」の値を取得
// 第3引数を true にすると、単一の値として返される(配列ではなく文字列として)
$price = get_post_meta(get_the_ID(), 'price', true);

// カスタムフィールドの値を HTML に安全に出力(XSS対策として esc_html を使用)
echo '<p>価格:' . esc_html($price) . '円</p>';
?>

↑ これをテンプレートに書くと、登録した価格をページに表示できます。


5-4. カスタムタクソノミー

● タクソノミーとは?

「カテゴリー」や「タグ」のように、投稿を分類するための仕組みです。
カスタム投稿タイプとセットで、独自のカテゴリー分類も作ることができます。

● 例:商品ジャンルを表す「product_category」を作る

// カスタムタクソノミー「商品カテゴリ」を登録する関数
function create_product_taxonomy() {
  register_taxonomy(
    'product_category', // タクソノミーのスラッグ(URLや識別子に使われる)
    'product',           // 紐づける投稿タイプ(ここではカスタム投稿タイプ「product」)
    array(
      'label' => '商品カテゴリ',   // 管理画面で表示されるラベル名
      'hierarchical' => true,     // true にするとカテゴリーのように階層構造が使える(false だとタグのような動作)
    )
  );
}

// 'init' アクションでタクソノミーを登録
add_action('init', 'create_product_taxonomy');

↑ このコードで、「商品」投稿に対して「商品カテゴリ」で分類できるようになります。


まとめ:自分専用のデータ構造を持つサイトが作れる!

この章では、WordPressに自分だけの投稿タイプや追加情報を組み込む方法を学びました。

  • データベースは記事などの情報を保存する場所
  • カスタム投稿タイプで「商品」「イベント」など新しい種類の投稿を作れる
  • カスタムフィールドで投稿ごとに追加情報を記録できる
  • カスタムタクソノミーで独自のカテゴリ分類も可能

これらを使えば、「単なるブログ」ではない、構造化された本格的なWebサイトを作れるようになります。


第6章:実践カスタマイズ例

― カスタム投稿やテンプレート編集を活用してみよう ―

ここまで学んできた内容を実際に活かして、具体的なカスタマイズ例を見ていきましょう。サンプルコードを見ながら、「こんなことができるんだ!」という感覚をつかんでください。


6-1. お知らせ一覧を作る

● 目的

会社やサイトのお知らせを専用ページで一覧表示したい。

● やり方の流れ

  1. カスタム投稿タイプ news を作成
  2. 投稿を追加(例:営業日変更のお知らせ)
  3. 一覧ページを作るテンプレートを追加

● 投稿タイプの追加コード(functions.php に記述)

// カスタム投稿タイプ「お知らせ(news)」を登録する関数
function create_news_post_type() {
  register_post_type('news', // 投稿タイプのスラッグ(URLなどで使用)
    array(
      // 管理画面で表示されるラベル設定
      'labels' => array(
        'name' => 'お知らせ' // 一覧画面などで使用される名前(複数形)
      ),
      'public' => true,            // フロントエンドでも表示可能にする
      'has_archive' => true,       // アーカイブページ(一覧)を有効にする(例:/news/)
      'supports' => array(         // 使用する機能の設定
        'title',                   // タイトル入力欄
        'editor',                  // 本文エディター
        'thumbnail',               // アイキャッチ画像
        'excerpt'                  // 抜粋(概要)入力欄
      ),
      'menu_position' => 6,        // 管理画面メニューの表示位置
      'menu_icon' => 'dashicons-megaphone' // 管理画面メニューのアイコン(メガホン)
    )
  );
}

// 'init' アクションで関数を呼び出し、投稿タイプを登録
add_action('init', 'create_news_post_type');

● 一覧表示用テンプレートの例(archive-news.php

<?php get_header(); ?> 
<!-- ヘッダー(header.php)を読み込む -->

<h1>お知らせ一覧</h1>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <!-- WordPressのループ開始:投稿があれば繰り返し表示 -->
  
  <div class="news-item">
    <h2><?php the_title(); ?></h2> <!-- 投稿のタイトルを表示 -->
    <p><?php the_excerpt(); ?></p> <!-- 投稿の抜粋(概要)を表示 -->
    <a href="<?php the_permalink(); ?>">続きを読む</a> <!-- 個別記事へのリンク -->
  </div>

<?php endwhile; endif; ?>
<!-- ループ終了:投稿がなければ何も表示しない -->

<?php get_footer(); ?> 
<!-- フッター(footer.php)を読み込む -->


6-2. カスタム投稿で商品紹介

● 目的

商品の紹介ページを作りたい(価格・在庫も表示)

● やること

  • 投稿タイプ product を作る
  • カスタムフィールドで価格などの情報を追加
  • テンプレートで表示する

● 表示テンプレート内でのフィールドの取り出し

<?php
// 現在の投稿IDに紐づくカスタムフィールド「price(価格)」を取得
$price = get_post_meta(get_the_ID(), 'price', true);

// 同じく「stock(在庫数)」を取得
$stock = get_post_meta(get_the_ID(), 'stock', true);
?>

<!-- 価格を表示(esc_htmlでXSS対策) -->
<p>価格:<?php echo esc_html($price); ?>円</p>

<!-- 在庫数を表示(esc_htmlでXSS対策) -->
<p>在庫:<?php echo esc_html($stock); ?></p>

※「Advanced Custom Fields(ACF)」プラグインを使うと、カスタムフィールドの入力画面をよりわかりやすく作れます。


6-3. 投稿に独自の入力項目を追加

● 目的

記事ごとに「おすすめ度」などの独自情報を入れたい

● やり方

  • カスタムフィールドを使う
  • 表示したいテンプレートに反映

● 例:おすすめ度(5段階)を表示する

<?php
// 現在の投稿に紐づくカスタムフィールド「rank(おすすめ度)」を取得
$rank = get_post_meta(get_the_ID(), 'rank', true);

// rank が存在する場合のみ表示(空や null を除外)
if ($rank) {
  // rank の数だけ「★」を繰り返して表示(例:3 → ★★★)
  echo '<p>おすすめ度:' . str_repeat('★', (int)$rank) . '</p>';
}
?>

↑ たとえば rank = 4 の場合、「おすすめ度:★★★★」と表示されます。


6-4. ユーザー権限に応じた表示切り替え

● 目的

ログインユーザーだけに見せたい内容を作る

● 例:ログインしている人だけに「編集リンク」を表示

<?php
// 現在のユーザーが「投稿の編集権限(edit_posts)」を持っているか確認
if (current_user_can('edit_posts')) {
  // 編集リンクを表示(編集画面へのリンクが自動的に出力される)
  edit_post_link('この記事を編集');
}
?>

● 応用:ログインユーザーにだけ秘密の情報を表示

<?php if (is_user_logged_in()) : ?>
  <!-- ユーザーがログインしている場合のみ、以下の内容を表示 -->

  <div class="secret-content">
    <p>これはログインしている人だけが見られる秘密の内容です。</p>
  </div>

<?php endif; ?>


まとめ:できることがぐっと広がる!

この章では、学んだ知識を使って実際のカスタマイズ例を紹介しました。

  • 「お知らせ」や「商品」などの投稿タイプを自由に追加
  • 投稿ごとに「価格」「おすすめ度」などの独自情報を登録
  • ユーザーのログイン状態や権限に応じて表示をコントロール

WordPressは「ブログツール」というイメージが強いですが、ちょっとしたコードの追加だけで、柔軟なWebアプリのようなことができるようになります。

次の章では、こうしたカスタマイズを行ううえで忘れてはいけない「セキュリティ」や「保守管理」の基本について学びます。


第7章:セキュリティと保守の基本

― 安心して使い続けるために知っておきたいこと ―

WordPressのカスタマイズが進んでくると、もう一つ大切になってくるのが「安全に運用すること」です。
この章では、セキュリティ対策保守のポイントについて、最低限知っておきたいことを解説します。


7-1. カスタマイズ時のセキュリティ対策

● なぜセキュリティが重要なのか?

WordPressは世界中で使われているため、悪意のある攻撃者に狙われやすいシステムでもあります。特に、自分でコードを書くときには注意が必要です。

● ユーザーの入力値には必ずチェックを!

たとえば、カスタムフィールドやフォームから受け取った値は、信頼できるとは限りません。

// 危険な例(サニタイズしていない)
echo $_POST['name'];

// 安全な例(HTMLとして無害化)
echo esc_html($_POST['name']);

WordPressには安全に処理するための関数が用意されています:

関数名説明
esc_html()HTMLとして安全に表示する
esc_attr()HTML属性値として安全に出力
sanitize_text_field()入力値を安全な文字列に整形する

● SQLインジェクションに注意

WordPressは自動でSQLインジェクションに強い構造を持っていますが、自前でSQLを書くときは注意が必要です。
$wpdb->prepare() を使って、安全なクエリを実行するようにしましょう。


7-2. コード管理とバックアップ

● コードはバージョン管理しよう

カスタマイズが増えてくると、「何をどこで変えたのか」がわからなくなることがあります。
そのため、Gitなどのバージョン管理ツールを使ってコードの変更履歴を残しておくのがおすすめです。

● バックアップはこまめに!

万が一、WordPressが壊れたり、誤ってファイルを消してしまったときに備えて、定期的にバックアップを取ることが非常に重要です。

バックアップの対象:

  • データベース(MySQL)
  • wp-content フォルダ(テーマ・プラグイン・アップロード画像など)

● おすすめのバックアップ方法

  • プラグインを使う:「UpdraftPlus」などのプラグインで自動バックアップ
  • サーバー側で設定:ホスティング会社のバックアップ機能を使う

7-3. よくあるトラブルと対処法

● トラブル1:カスタマイズ後に画面が真っ白になる

原因:PHPの文法エラー致命的なエラーが考えられます。

対処法:

  • エラーの原因を探すには「wp-config.php」でデバッグを有効化:
define( 'WP_DEBUG', true );

  • FTPでテーマファイルやプラグインを一時的に無効化して復旧する

● トラブル2:管理画面に入れなくなった

  • プラグインやテーマの不具合でログインできなくなることがあります
  • FTPで wp-content/plugins フォルダをリネームすれば、すべてのプラグインを無効化できます

● トラブル3:スパムや不正アクセス

  • 「ログイン試行の制限」や「reCAPTCHA導入」で対策
  • 管理画面のURLを変更するプラグイン(例:WPS Hide Login)も有効

まとめ:安心してWordPressを使い続けるために

この章では、安全にWordPressを運用するための基本的なポイントを学びました。

  • 入力値のチェックやサニタイズは必須の習慣
  • バージョン管理とバックアップはトラブルの保険
  • よくあるエラーの原因と対応方法を知っておくといざというときに安心

「動けばOK」ではなく、「安全に動かし続ける」ことを意識することが、これからのスキルアップにつながります。

次の最終章では、さらに学びを深めるためのヒントやツールを紹介します!

お待たせしました!初心者向けに、学びを深めるためのヒントをまとめた第8章「より深く学ぶために」を執筆します。


第8章:より深く学ぶために

― カスタマイズの先へ、一歩進んだ学び方 ―

ここまで、WordPressのカスタマイズを基礎から実践まで学んできました。
この章では、さらにスキルを広げていくためのツール、考え方、学びの方向性を紹介します。


8-1. 開発に役立つツールと環境構築

● ローカル環境で安心して試す

本番サイトを直接いじるのはとても危険です。失敗しても問題のないローカル環境での開発が安心です。

おすすめのローカル環境構築ツール:

  • Local(by Flywheel):初心者にもやさしいGUI付きのローカル環境
  • XAMPP / MAMP:Apache + PHP + MySQL をまとめて動かせるツール
  • DevKinsta:Kinsta社による簡単開発環境(Localと似た方向性)

● VS Code + Git で効率よく開発

  • Visual Studio Code(VS Code) は軽量で使いやすいエディタ
  • 拡張機能(PHP IntelliSense、WordPress Snippet Packなど)を入れれば、コーディングも快適に
  • Git を使えばコードの変更履歴を残せるので、安心して試行錯誤できます

8-2. WordPress REST API 入門

● REST API ってなに?

REST APIとは、外部からWordPressのデータを取得・送信できる仕組みです。
たとえば、JavaScriptを使って記事一覧を非同期で表示したり、モバイルアプリから投稿内容を取得したりできます。

● どんなことができるの?

  • JavaScriptで「続きを読む」ボタンを押すと非同期で記事を表示
  • スマホアプリと連携してWordPressの内容を表示
  • フロントとバックを分けた「ヘッドレスCMS」として活用

REST APIを使うには、JavaScriptやJSONの知識が必要になりますが、将来的に非常に役立つスキルです。


8-3. よく使う関数・ドキュメントを調べる

● WordPress Codex & Developer Resources

● よく使う関数(覚えておくと便利)

関数名内容
get_post_meta()カスタムフィールドを取得する
wp_enqueue_style()CSSを正しく読み込む
wp_enqueue_script()JSを読み込む
add_action()アクションフックを登録する
add_filter()フィルターフックを登録する
register_post_type()カスタム投稿タイプを登録
register_taxonomy()カスタム分類を登録

「どうやるんだっけ?」と思ったら、まずは公式サイトで検索してみる習慣をつけましょう。


まとめ:学びはこれからも続いていく

このテキストでは、WordPressをプログラミングでカスタマイズするための基礎を、段階的に学んできました。

  • WordPressの仕組みを理解し
  • テーマ・プラグインを使って見た目や機能を変え
  • カスタム投稿や入力項目で独自のデータ構造を作り
  • 安全に、効率よく開発・運用する方法を知り
  • そして、次のステップへの道しるべを得た

これからは、実際に作ってみることが一番の学びです。ぜひ、自分のWebサイトや身近なプロジェクトにこの知識を活かして、WordPressの世界をもっと楽しんでください!


演習問題編:手を動かして覚える WordPressカスタマイズ

この章では、これまで学んできた内容を実際に自分で試せる演習形式にまとめました。
「読む」だけでなく「作る」ことで、知識がぐっと身につきます。


演習1:子テーマを作って背景色を変えてみよう

目的: 子テーマの作成とCSSの編集を体験する
手順:

  1. wp-content/themestwentytwentyfour-child フォルダを作成
  2. 中に style.css を作り、以下を記述:
/*
Theme Name: Twenty Twenty-Four Child
Template: twentytwentyfour
*/

body {
  background-color: #f5f5f5;
}
  1. 管理画面で子テーマを有効化
  2. ブラウザで背景色が変わったことを確認

演習2:カスタム投稿タイプ「イベント」を作成する

目的: オリジナルの投稿タイプを追加して、一覧表示ページを作る
ヒント:

  • 投稿タイプ名:event
  • ラベル:イベント
  • 投稿画面でタイトル・本文を入力できるようにする

追加課題:
テンプレート archive-event.php を作成して、「イベント一覧」ページを整えてみましょう。


演習3:投稿に「おすすめ度」を追加して表示する

目的: カスタムフィールドを使って投稿に独自データを追加する

  1. 投稿画面の「カスタムフィールド」で「rank」を追加
  2. 値は 1〜5 の数字で入力(おすすめ度)
  3. single.php に以下のコードを追加して表示:
<?php
$rank = get_post_meta(get_the_ID(), 'rank', true);
if ($rank) {
  echo '<p>おすすめ度:' . str_repeat('★', (int)$rank) . '</p>';
}
?>

演習4:ショートコードであいさつ文を表示するプラグインを作ろう

目的: プラグインでショートコードを作成する体験

  1. wp-content/plugins/my-greeting を作成
<?php
/*
Plugin Name: My Greeting
Description: あいさつショートコード
*/

function my_greeting() {
  return '<p>こんにちは!WordPressを楽しんでいますか?</p>';
}
add_shortcode('greeting', 'my_greeting');
  1. プラグインを有効化し、投稿本文に [greeting] を書いて確認

演習5:ログインしているユーザーだけに表示されるメッセージを作ろう

目的: 条件分岐とユーザー権限の活用

single.php に以下を追加して、ログイン済みのユーザーにだけメッセージを表示:

<?php if (is_user_logged_in()) : ?>
  <p>ようこそ、ログイン中のユーザーさん!</p>
<?php endif; ?>


まとめ:自分の手で作ってこそ本当の理解に

この演習編では、小さくても実際に動かすことで学びになる「5つのチャレンジ」をご紹介しました。
慣れてきたら、自分なりにアレンジしてみるのもおすすめです。


トラブル対応Q&A編

― あわてず落ち着いて、よくあるエラーに対処しよう ―

WordPressのカスタマイズ中にトラブルが起きても大丈夫。
この章では、初心者がよくつまずくポイントとその対処法をQ&A形式で紹介します。


Q1. 画面が真っ白になった!どうすればいい?

原因の多くは:PHPの文法エラーや致命的エラー(Fatal Error)です。

対処法:

  1. wp-config.php を開き、以下のようにデバッグモードを有効化:
define( 'WP_DEBUG', true );
  1. もう一度ページを開くと、エラーの場所と内容が表示される
  2. 指摘された行のコードを見直して修正する(;{} の抜けに注意)

Q2. 管理画面にログインできなくなった

よくある原因:

  • プラグインやテーマのエラーでログイン処理が止まる
  • URLを変更した or パスワードがわからない

対処法:

  • FTPでログインできる場合:
    wp-content/plugins フォルダを一時的に plugins_backup にリネーム → 全プラグインが無効化される
  • パスワードを忘れた場合:
    ログイン画面の「パスワードをお忘れですか?」から再設定
  • 管理者アカウントを削除してしまった場合:
    データベース(phpMyAdmin)から新しい管理者ユーザーを追加する必要があります(少し中級者向け)

Q3. 投稿やページのURL(パーマリンク)が404になる

原因:パーマリンク設定が正しくない or .htaccess の問題

対処法:

  1. 管理画面の「設定 > パーマリンク」へ
  2. 一度、何も変更せずに「保存」をクリック
    .htaccess が再生成されて解決することが多い

Q4. プラグインを入れたらサイトが重くなった

原因:機能が多すぎるプラグイン、相性の悪いプラグインなど

対処法:

  1. 一度、プラグインを停止して動作確認
  2. 不要なプラグインは削除(無効化するだけでは負荷が残ることも)
  3. キャッシュ系プラグイン(例:WP Super Cache)を導入して表示速度を改善

Q5. 投稿に追加したカスタムフィールドが表示されない

原因:テンプレートに取得コードを書いていない or スペルミス

チェックポイント:

  • get_post_meta(get_the_ID(), 'price', true) のキー名が正しいか
  • 投稿にそのフィールドが登録されているか
  • HTML出力されるように echo しているか

Q6. ショートコードを入れたけど何も表示されない

原因:ショートコードの関数が定義されていない、あるいはプラグインが無効

対処法:

  • add_shortcode() がちゃんと書かれているか確認
  • プラグインとして有効化されているか確認
  • [greeting] などのタグが正しく書かれているか再チェック

Q7. カスタム投稿タイプが一覧表示されない

原因:テンプレートファイルがない、またはクエリが正しくない

対処法:

  • archive-投稿タイプ名.php を作っているか?
  • has_archive => trueregister_post_type() に指定しているか?
  • パーマリンクを保存し直しているか?(←忘れがち!)

まとめ:エラーは「成長のチャンス」

カスタマイズにエラーやトラブルはつきものです。
でも、「原因を調べて、自分で直せた!」という経験は、技術力アップの大きなステップになります。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。