初心者必見!WordPressのfunctions.phpとは?使い方や役割、緊急時の対処法などを徹底解説

投稿日:2024年04月22日(月) 更新日:2024年04月27日(土)
初心者必見!WordPressのfunctions.phpとは?使い方や役割、緊急時の対処法などを徹底解説|UMENOKI|すぐに仕事で使えるIT技術情報メディア

みなさんこんにちは!エンジニアの高澤です!

今回はWordPressのテーマに欠かせないfunctions.phpの使い方や役割などを徹底解説していきたいと思います。

WordPress構築は主にテーマ開発というものがあるかと思いますが、このテーマ開発においてfunctions.phpは必須のPHPファイルになります。

逆にいうと、このfunctions.phpを理解できていなければテーマ開発をおこなうことはできないといっても過言ではありません。

そのため、よろしければぜひ当記事をテーマ開発などのお仕事でご活用いただけましたら幸いです。

functions.phpとは

functions.phpとは、WordPressテーマを構成するPHPファイルの一つで、WordPressの全体処理を拡張・カスタマイズするための仕組みのことをいいます。

functions.phpはWordPressのテーマ開発においてはほぼ必須のPHPファイルになります。

厳密にいうとテーマはfunctions.phpがなくても成立しますが、WordPressのテーマ開発ではちょっとしたカスタマイズでもfunctions.phpが99%の割合で必要になるので、開発者は必ず扱えなければなりません。

functions.phpの役割

functions.phpの役割としては、WordPressの処理や挙動をカスタマイズするために必要になります。

具体的には、主に以下のような内容でfunctions.phpを利用することになります。

  • プラグインの機能を拡張、カスタマイズ
  • テーマの機能を拡張、カスタマイズ
  • 管理画面を独自にカスタマイズしたり機能を追加
  • ショートコードの作成、など

どれだけfunctions.phpが必要不可欠なのかがお分かりいただけましたでしょうか?

主にWordPressで提供されている「フック(アクションフック・フィルターフック)」という技術を中心にfunctions.phpでWordPressをカスタマイズしていくことになります。

functions.phpの注意点

functions.phpには注意点があります。

それはfunctions.phpへのコードの記述にミスがあるとサイトが真っ白になってしまう可能性があることです。

その理由は、functions.phpは「WordPressが初期化されるとき」に読み込まれるからです。

functions.phpはテーマの機能を追加するためのアクションフックやフィルターフックを定義するのに使用されます。

これらのフックはWordPressがさまざまなタイミングでフックした処理が実行されるため、その前にfunctions.phpが読み込まれます。

つまり、functions.phpにエラーに値するコードがあると、そのコード以降の処理全体が停止してしまうというわけです。

なので、functions.phpの扱いは慎重におこない、エンジニアでないウェブ担当者の方などに対しては必ずfunctions.phpには触らないでいただくという周知していただくことをおすすめいたします。

functions.phpのWordPress処理の読み込みタイミング

それではWordPressがサイトのページを表示するプロセスについてここで確認しておきましょう。

ここでの内容をおさえておくと、functions.phpによって問題が起こった時に応用が効くようになります。

WordPressがページを表示するプロセスとしては以下になります。

上から順番にWordPressの処理はおこなわれます。

  • WordPressの初期化
  • テーマの読み込み(ここでfunctions.php読み込み!)
  • アクションフックとフィルターフックの処理
  • ページの表示

それぞれ解説いたします。

WordPressの初期化

WordPressが起動すると、まず初期化プロセスが開始されます。このプロセスでは、WordPressの各種設定が読み込まれ、必要な機能がセットアップされます。

テーマの読み込み

WordPress初期化の一環として、有効化されているテーマが読み込まれます。このときに、テーマディレクトリ内のfunctions.phpファイルが読み込まれます。

アクションフックとフィルターフックの処理

functions.phpが読み込まれた後、WordPressは登録されたアクションフックやフィルターフックを実行します。これらのフックには、ページの表示や処理に関するカスタマイズが含まれます。

ページの表示

テーマの初期化とフックの処理が完了した後、WordPressはリクエストされたページの内容を取得し、表示します。このときには、テーマファイルやプラグインファイルから必要なデータが取得され、ページがレンダリングされます。

functions.phpの作り方

functions.phpの作り方について解説いたします。

functions.phpの作り方は何も難しいことはありません。

ご自身のWordPressのテーマの一番トップディレクトリ階層に「functions.php」というファイル名でPHPファイルを作成していただければ完成です。

作成する際はFTPソフトを利用してサーバーに接続してファイルをアップロードしてください。

functions.phpの使い方

functions.phpの使い方についてご説明します。

使い方に関しても決して難しいことはありません。

functions.phpにご自身のカスタマイズに必要なPHPコードを記述するだけです。

具体的には以下のようにフックのコードを記述したります。

<?php
// 投稿一覧画面に項目追加
function add_posts_columns_element($columns) {
    // 新しい列「ページURL」を追加する
    $columns['post_name'] = 'ページURL';
    return $columns;
}
// manage_post_posts_columnsフィルターフックにadd_posts_columns_element関数を追加
add_filter( 'manage_post_posts_columns', 'add_posts_columns_element' );

function add_posts_columns_element_row($column_name, $post_id) {
    // 列名が「post_name」の場合
    if ( 'post_name' == $column_name ) {
        $element_value = get_post($post_id)->post_name;
        // カスタムフィールドの値が存在するかどうかをチェックし、表示する
        echo ( $element_value ) ? $element_value : '-';
    }
}
// manage_post_posts_custom_columnアクションフックにadd_posts_columns_element_row関数を追加
add_action( 'manage_post_posts_custom_column', 'add_posts_columns_element_row', 10, 2 );

上記コードはフィルターフックのmanage_post_posts_columnsフックと、アクションフックのmanage_post_posts_custom_columnフックを利用して、投稿管理画面一覧の列に「ページURL」を表示するカスタマイズのコードになります。

結果として下図のように追加されているのが確認できるかと思います。

functions.phpの使い方はこれだけです!

functions.phpを編集する方法

また、編集方法としては以下になるかと思います。

  • テーマエディターから編集
  • FTPから編集

これでfunctions.phpの使い方の説明は以上です。

まったく難しくなかったかと思います。

functions.phpのおすすめの管理方法

functions.phpのおすすめの管理方法について解説いたします。

おすすめの管理方法は「実装したコードごとにコメントアウト」することです。

具体的には以下のようにコメントアウトしましょう。

<?php
/**
 * テーマの機能をセットアップするための関数を呼び出す
 */

上記のように、funcitons.phpにコメントアウトをおこなえば、コードの理解やメンテナンスを容易にするのに役立ちます。

以下にコメントアウトを活用したfunctions.phpのサンプルコードの全体像を掲載させていただきます。

<?php
/**
 * テーマの機能をセットアップするための関数を呼び出す
 */
function my_theme_setup() {
    // カスタムメニューの登録
    register_nav_menus( array(
        'primary' => 'Primary Menu',
        'footer' => 'Footer Menu',
    ) );

    // カスタムヘッダーの有効化
    add_theme_support( 'custom-header' );

    // カスタム背景の有効化
    add_theme_support( 'custom-background' );

    // アイキャッチ画像の有効化
    add_theme_support( 'post-thumbnails' );

    // HTML5のマークアップに対応
    add_theme_support( 'html5', array(
        'search-form',
        'comment-form',
        'comment-list',
        'gallery',
        'caption',
    ) );

    // 投稿フォーマットのサポート
    add_theme_support( 'post-formats', array(
        'aside',
        'gallery',
        'link',
        'image',
        'quote',
        'status',
        'video',
        'audio',
        'chat',
    ) );
}
add_action( 'after_setup_theme', 'my_theme_setup' );

/**
 * フロントエンドのスタイルとスクリプトを読み込む
 */
function my_theme_scripts() {
    // スタイルシートの読み込み
    wp_enqueue_style( 'my-theme-style', get_stylesheet_uri() );

    // JavaScriptの読み込み
    wp_enqueue_script( 'my-theme-script', get_template_directory_uri() . '/js/script.js', array('jquery'), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_theme_scripts' );

/**
 * カスタムウィジェットエリアの登録
 */
function my_theme_widgets_init() {
    register_sidebar( array(
        'name' => 'Sidebar Widget Area',
        'id' => 'sidebar-widget-area',
        'description' => 'This is the sidebar widget area.',
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget' => '</div>',
        'before_title' => '<h2 class="widget-title">',
        'after_title' => '</h2>',
    ) );
}
add_action( 'widgets_init', 'my_theme_widgets_init' );

上記のコードでは、テーマのセットアップ、スタイルとスクリプトの読み込み、カスタムウィジェットエリアの登録など、一般的なカスタマイズをコメント付きで示しています。

コメントはそれぞれの機能や役割を説明しコードの理解を助けてくれますので、できるだけ記述するようにしましょう。

functions.phpでサイトが真っ白になった時の対処法

ここを読んでいるあなたはおそらくサイトが真っ白になってしまいパニックになっていることでしょう。

一旦落ち着きましょう。そして直前におこなったことを思い浮かべてみて、冷静に調査分析してください。

直前に触ったのがfunctions.phpであれば、ここでの内容で解決できる可能性があるため、ぜひお試しください。

それではfunctions.phpの編集がきっかけでサイトが真っ白になってしまった時の対処法をここで解説していきたいと思います。

ここでの作業でうっかりデータを削除してしまった場合の責任が持てませんので、必ず事前にサイトのバックアップを取得しておいてください。

まず真っ白になる原因として考えられることとしては以下になるかと思います。

  • functions.phpに全角のスペース等がある
  • functions.phpに記述したPHPコードが間違っている
  • functions.phpに記述した処理とプラグインが競合している

上記のような場合に単純にfunctions.phpファイルを修正できればいいのですが、管理画面すらアクセスできない状況になってしまうことも多々あるかと思います。

そのためここでは、一番簡単でシンプルな解決方法を解説させていただきます。

FTPソフトでサーバーにアクセスする

まずはFTPソフトでサーバーにアクセスします。

FileZillaなどFTPソフトを利用してレンタルサーバーにて設定してあるFTPアカウントの情報からサーバーにアクセスしてください。

もしFTPソフトをインストールしてなければFileZillaがおすすめです。

https://filezilla-project.org

functions.phpをデスクトップにダウンロードする

FTPソフトからサーバーにアクセスできたら、以下の階層を目指してファイルを進んでください。

/【WordPressサイトのディレクトリファイル】/wp-content/themes/【テーマファイル名】/functions.php

上記functions.phpファイルをデスクトップにダウンロードしてください。

functions.phpをエディタ等で開いて修正する

ダウンロードしたfunctions.phpを開いていただき、サイトが真っ白になるエラーが発生した直前のコードを削除してください。

FTPソフトで再度アップロード

削除ができたら、その状態のfunctions.phpをサーバーの同じ階層に上書きアップロードしてください。

すると、無事サイトが起動したかと思います。

まとめ

WordPressのテーマに欠かせないfunctions.phpの使い方や役割などの解説は以上になります。

functions.phpはテーマ開発においては欠かせないPHPファイルになります。

このfunctions.phpによって高度なテーマ開発や管理画面のカスタマイズすることが可能となります。

当記事一つで仕事に使えるレベルでfunctions.phpについて解説しておりますので、よろしければぜひお役立ていただけましたら幸いです。

執筆者

UMENOKI編集部 高澤 翔汰

歴5年目(2024年8月以降から5年目です)のエンジニアです!
CMSでのサイト構築とWebデザイン制作を兼任して5年目になります。
自作のiOSアプリ(iPhoneアプリ)やWordPressプラグインを開発することもあり、まだまだ現在進行形で勉強中です!

お気軽に皆さんのご要望をお聞かせください!

どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!

例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など

送信と同時にプライバシーポリシーに同意したものとします。
サンタさん