目的
- WordPressテーマに
functions.phpを追加し、基本的な機能を有効化する CSS/JSファイルの読み込みを WordPressの正しい方法で行う- サイトカラーやアイキャッチ(投稿サムネイル)など、カスタマイズの基本設定を加える
functions.php をテーマフォルダに作成
unnhanbur フォルダ直下に functions.php というファイルを作成します。
functions.php は、テーマフォルダ直下に配置します。
- 例)
/wp-content/themes/unnhanbur/functions.php
ファイル名は必ず functions.php(スペルミスや拡張子間違いに注意!)
functions.phpとは?
functions.php は、WordPressテーマ専用の設定ファイルで、テーマに機能や命令(PHPの処理)を追加したいときに使います。
HTMLで言うと「設定をまとめて書く場所」、CSSで言うと「共通スタイルを定義する場所」と似ています。
| 主な用途 | 内容 |
|---|---|
| CSSやJSの読み込み | wp_enqueue_style() や wp_enqueue_script() を使ってファイルを読み込む |
| アイキャッチの有効化 | 投稿・固定ページで画像を設定できるようにする |
| カスタムメニューの登録 | ヘッダーやフッターのナビゲーションを管理画面から操作できるようにする |
| サイトカラー・ロゴ設定 | テーマカスタマイザーで色やロゴを切り替え可能にする |
| 独自関数の作成 | 自作の便利な関数を追加できる(上級者向け) |
functions.phpはページに直接表示されるわけではない
HTMLやPHPテンプレート(index.php, page.php など)と違って、functions.php に書かれた内容は画面には直接表示されません。
- 裏側でWordPress本体と連携し、機能を追加していると思ってください。
- JavaScriptで言うと「イベントを設定しているjsファイル」のようなイメージです。

よく使う functions.php の記述パターン
| 目的 | 関数の書き方(例) | 実行タイミング(add_action の第1引数) |
|---|---|---|
| CSS/JSを読み込む | function unnhanbur_enqueue_assets() { ... } | 'wp_enqueue_scripts' |
| アイキャッチ画像を有効化 | function unnhanbur_setup_theme() { add_theme_support('post-thumbnails'); } | 'after_setup_theme' |
| メニューを登録 | function unnhanbur_register_menus() { register_nav_menu(...); } | 'after_setup_theme' |
| ウィジェットエリアを作る | function unnhanbur_widgets_init() { register_sidebar(...); } | 'widgets_init' |
| 管理画面用のCSS/JSを読み込む | function unnhanbur_admin_custom() { ... } | 'admin_enqueue_scripts' |
<title>タグを出力する | add_theme_support('title-tag'); を含む関数 | 'after_setup_theme' |
コード例を見てみよう
// CSSとJSの読み込み
function unnhanbur_enqueue_assets() {
wp_enqueue_style('theme-style', get_stylesheet_uri());
}
add_action('wp_enqueue_scripts', 'unnhanbur_enqueue_assets');
// アイキャッチを有効にする
function unnhanbur_setup_theme() {
add_theme_support('post-thumbnails');
}
add_action('after_setup_theme', 'unnhanbur_setup_theme');
補足:フックとは?
'wp_enqueue_scripts'や'after_setup_theme'などは、WordPressが「ここで処理を追加してね」と用意しているフック(Hook)- これに対して、自分の関数を
add_action()で登録しておくことで、決まったタイミングに実行されます
css/jsファイルの読み込み
作成したfunctions.phpに下記のコードを貼り付けておきましょう。
<?php
// ==============================
// CSSとJavaScriptの読み込み
// ==============================
function unnhanbur_enqueue_assets() {
// ------------------------------
// ▼ CSSの読み込み
// ------------------------------
// Google Fonts(外部フォント)を読み込み
wp_enqueue_style(
'google-fonts',
'https://fonts.googleapis.com/css2?family=Anonymous+Pro:wght@400;700&family=Caveat:wght@500&display=swap',
false
);
// リセットCSS(ブラウザ差をなくすための初期化CSS)
wp_enqueue_style(
'reset-style',
get_template_directory_uri() . '/css/reset.css',
array(), // 依存なし
'1.0' // バージョン
);
// メニュー用のスタイル
wp_enqueue_style(
'menu-style',
get_template_directory_uri() . '/css/menu.css',
array(),
'1.0'
);
// カスタムスタイル(自作のCSS)
wp_enqueue_style(
'custom-style',
get_template_directory_uri() . '/css/custom.css',
array(),
'1.0'
);
// テーマのメインスタイル(style.css)
wp_enqueue_style(
'theme-style',
get_stylesheet_uri(),
array(),
'1.0'
);
// ------------------------------
// ▼ JavaScriptの読み込み
// ------------------------------
// 自作のJavaScriptファイル(フッターで読み込み:true)
wp_enqueue_script(
'custom-js',
get_template_directory_uri() . '/js/custom.js',
array(), // 依存なし
'1.0',
true // フッターで読み込む
);
}
// WordPressのフックに登録(wp_enqueue_scriptsというタイミングで上記を実行)
add_action('wp_enqueue_scripts', 'unnhanbur_enqueue_assets');
wp_enqueue_style() とは?(ダブリューピー・エンキュー・スタイル)
CSSファイルをWordPressに「読み込んで」と伝える関数です。
wp_enqueue_style(ハンドル名, CSSファイルのURL, 依存関係, バージョン, メディア);
そのためjavascriptの時は、wp_enqueue_scriptとなります。
header.phpの修正
functions.phpでwp_enqueue_style('theme-style', get_stylesheet_uri(), array(), '1.0');を記述しましたので、header.phpのcssやscriptの読み込みコードは削除しておきましょう。
なぜfunctions.phpで記述するの? header.php に <link> で直接書く方法は、古いやり方で、手動で書いたCSSしか読み込まれず、WordPressが提供する自動処理や依存管理が使えませんので、修正しておきましょう。
テーマの基本機能を有効化
次に下記のコードをfunctions.phpに追加で貼り付けます。
// ==============================
// テーマの初期設定
// ==============================
function unnhanbur_setup_theme() {
// ------------------------------
// ▼ 投稿にアイキャッチ画像(サムネイル)を使えるようにする
// ------------------------------
add_theme_support('post-thumbnails');
// ------------------------------
// ▼ カスタムロゴを有効化
// 管理画面からロゴをアップロードして表示可能になる(必要な場合)
// ------------------------------
add_theme_support('custom-logo');
// ------------------------------
// ▼ HTML5マークアップに対応
// 例:検索フォーム・ギャラリー・キャプションなどの出力をHTML5形式に
// ------------------------------
add_theme_support('html5', array('search-form', 'gallery', 'caption'));
// ------------------------------
// ▼ titleタグをWordPressに自動で出力させる
// <title>〜</title> を header.php に書かなくてもOKになる
// ------------------------------
add_theme_support('title-tag');
}
// after_setup_theme アクションでテーマ設定を登録
add_action('after_setup_theme', 'unnhanbur_setup_theme');
add_theme_support() 関数とは?
テーマに「この機能を使えるようにして」と伝える関数です。
WordPressには、使いたい機能(アイキャッチ・カスタムロゴなど)を自分で“有効化”しないと使えない仕組みがあります。
そのため、functions.php に add_theme_support() を書いて、「このテーマはこの機能に対応している」と宣言する必要があります。
各設定の意味まとめ
| 機能名 | 説明 |
|---|---|
post-thumbnails | 投稿・固定ページで「アイキャッチ画像(サムネイル)」を使えるようにする |
custom-logo | WordPressの「外観 > カスタマイズ」からロゴ画像を設定できるようにする |
html5 | HTML5形式での出力に対応。構造がきれいになり、アクセシビリティやSEOに有利 |
title-tag | <title> を自動出力。header.phpに手動で書く必要がなくなる |
:root を基にした WordPress カラーパレット登録
ブロックエディター(Gutenberg)で編集する場合、テーマカラーを統一したい(編集者に自由に色を選ばせたくない場合)に、カラーパレットを設定しておきます。
function unnhanbur_setup_theme() {最後に下記を追加します。
// ...既存の add_theme_support()の下に下記を追加
// Gutenberg カラーパレット登録
add_theme_support('editor-color-palette', array(
array(
'name' => __('Primary', 'unnhanbur'),
'slug' => 'primary',
'color' => '#570B0B',
),
array(
'name' => __('Primary Hover', 'unnhanbur'),
'slug' => 'primary-hover',
'color' => '#F11E1E',
),
array(
'name' => __('Background Primary', 'unnhanbur'),
'slug' => 'bk-primary',
'color' => '#ffffff',
),
array(
'name' => __('Background Secondary', 'unnhanbur'),
'slug' => 'bk-secondary',
'color' => '#F5F5F5',
),
array(
'name' => __('Text Default', 'unnhanbur'),
'slug' => 'text-default',
'color' => '#1d1d1d',
),
array(
'name' => __('Text Secondary', 'unnhanbur'),
'slug' => 'text-secondary',
'color' => '#00000080',
),
array(
'name' => __('Line Default', 'unnhanbur'),
'slug' => 'line-default',
'color' => '#0000001A',
),
array(
'name' => __('Pink', 'unnhanbur'),
'slug' => 'pink',
'color' => '#f184846b',
),
array(
'name' => __('Gray', 'unnhanbur'),
'slug' => 'gray',
'color' => '#5c5c5c',
),
array(
'name' => __('Light Gray', 'unnhanbur'),
'slug' => 'lightgray',
'color' => '#ddd',
),
array(
'name' => __('Dark Gray', 'unnhanbur'),
'slug' => 'darkgray',
'color' => '#ababab',
),
));
対応する CSS クラスを併せて書くとさらに便利
WordPressブロックエディターでは、スラッグ(例:primary)が以下のようなクラス名になります。custom.cssに追加しておきましょう。
.has-primary-background-color {
background-color: var(--primary);
}
.has-primary-color {
color: var(--primary);
}
.has-text-secondary-color {
color: var(--text-secondary);
}
カラーパレットと CSS 変数を一致させることで、Gutenberg でもフロントでも色の整合性を保てます。
色以外(フォントなど)のカスタム設定もできます
:root にはフォント変数もある場合は、以下も function unnhanbur_setup_theme() { に追記可能です
add_theme_support('editor-font-sizes', array(
array(
'name' => __('Small', 'unnhanbur'),
'slug' => 'small',
'size' => 14,
),
array(
'name' => __('Medium', 'unnhanbur'),
'slug' => 'medium',
'size' => 18,
),
array(
'name' => __('Large', 'unnhanbur'),
'slug' => 'large',
'size' => 24,
),
array(
'name' => __('Title', 'unnhanbur'),
'slug' => 'title',
'size' => 36,
),
));
