functions.php は、WordPressテーマで使用されるPHPファイルで、テーマの機能を追加したりカスタマイズしたりするために利用されます。このファイルはテーマの「機能設定ファイル」とも呼ばれ、WordPressのテーマフォルダ内に必ず1つ存在します。
functions.php の役割
functions.php には、WordPressサイト全体に影響を与えるコードや関数を追加できます。以下は、functions.php でよく行われる処理の例です。
テーマの初期設定
テーマのサポート機能(たとえば、投稿サムネイル、カスタムロゴ、メニューの位置など)を有効にできます。
function my_theme_setup() {
    add_theme_support('post-thumbnails'); // 投稿サムネイルを有効化
    add_theme_support('custom-logo'); // カスタムロゴを有効化
    register_nav_menus(array( // ナビゲーションメニューを登録
        'primary' => 'Primary Menu',
        'footer' => 'Footer Menu'
    ));
}
add_action('after_setup_theme', 'my_theme_setup');
カスタム関数の追加
サイト独自の機能を持たせるカスタム関数を定義できます。
function my_custom_function() {
    return 'これはカスタム関数です';
}
JavaScriptやCSSの追加・管理
テーマで使用するCSSやJavaScriptを読み込む処理を設定します。これは wp_enqueue_style や wp_enqueue_script 関数を使って行います。
function my_theme_scripts() {
    wp_enqueue_style('main-styles', get_stylesheet_uri()); // メインのスタイルシート
    wp_enqueue_script('custom-script', get_template_directory_uri() . '/js/custom.js', array(), '1.0', true); // カスタムスクリプト
}
add_action('wp_enqueue_scripts', 'my_theme_scripts');
ウィジットエリアの登録
サイドバーやフッターなどにウィジェットエリアを追加できます。
function my_widgets_init() {
    register_sidebar(array(
        'name' => 'Sidebar',
        'id' => 'sidebar-1',
        'before_widget' => '<div class="widget">',
        'after_widget' => '</div>',
        'before_title' => '<h2 class="widget-title">',
        'after_title' => '</h2>',
    ));
}
add_action('widgets_init', 'my_widgets_init');
フィルターフックとアクションフックの使用
WordPressには数多くのフックがあり、functions.php内でこれらのフックを利用して、WordPressの動作や表示をカスタマイズできます。
// 投稿タイトルの後ろに絵文字を追加
function add_emoji_to_title($title) {
    return $title . ' 😊';
}
add_filter('the_title', 'add_emoji_to_title');
functions.php をカスタマイズする際のポイント
子テーマの利用
functions.phpを編集する際、親テーマを直接変更すると、テーマのアップデートで上書きされてしまう可能性があります。子テーマを作成し、子テーマ内のfunctions.phpを編集することで、アップデートの影響を受けないカスタマイズができます。
エラーに注意
functions.phpにエラーがあるとサイト全体が表示されなくなることがあるため、編集する際は慎重にコードを追加・変更するようにしましょう。
functions.php は、テーマに機能を追加したりWordPressの動作を変更するための重要なファイルです。初期設定、カスタム関数、スクリプト管理、ウィジェットエリアの登録、フックの利用など、WordPressサイトに必要な多くの機能を実装できます。