functions.phpとは?初心者のための役割と使い方入門

WordPressテーマの中でよく見かける「functions.php」。名前からして難しそうに感じるかもしれませんが、実はWordPressサイトにさまざまな便利な機能を追加できる、とても重要なファイルです。この記事では、functions.phpの基本的な役割や使い方を初心者向けにわかりやすく解説します。

functions.phpとは何か?

functions.phpは、WordPressテーマの中にある「テーマ専用の設定ファイル」のようなものです。具体的には、サイト全体に影響するカスタマイズや機能追加を記述する場所として使われます。

主な役割

  • 独自の関数や機能を追加
  • ウィジェットやメニューの有効化
  • カスタム投稿タイプやカスタムフィールドの追加
  • プラグイン的な処理の簡易実装

どこにあるの?

WordPressテーマの中に存在します。

例)
wp-content/themes/your-theme/functions.php


基本的な機能追加

functions.phpでまず押さえておきたい、基本的なテーマ機能の有効化方法を紹介します。

1. アイキャッチ画像(サムネイル)を有効にする

記事に画像付きのサムネイルを表示できるようになります。

add_theme_support('post-thumbnails');

2. メニュー機能を有効にする

管理画面からナビゲーションメニューを作成・管理できるようになります。

function register_my_menus() {
    register_nav_menus(array(
        'main-menu' => 'メインメニュー',
        'footer-menu' => 'フッターメニュー',
    ));
}
add_action('after_setup_theme', 'register_my_menus');

3. CSSやJavaScriptの読み込み

テーマ専用のCSSやJSファイルを正しく読み込ませる方法です。

function my_theme_scripts() {
    wp_enqueue_style('main-style', get_stylesheet_uri());
    wp_enqueue_script('main-script', get_template_directory_uri() . '/js/main.js', array(), null, true);
}
add_action('wp_enqueue_scripts', 'my_theme_scripts');

投稿画面やエディタのカスタマイズ

管理画面や投稿画面の見た目・挙動を調整するコード例です。

4. 投稿からタグ機能(post_tag)を無効化する

タグ機能そのものを投稿タイプから取り除きます。

function remove_post_tags() {
    unregister_taxonomy_for_object_type('post_tag', 'post');
}
add_action('init', 'remove_post_tags');

5. 投稿画面の不要な項目を非表示にする

投稿編集画面で不要な入力欄を削除し、UIをスッキリさせます。

function remove_post_metaboxes() {
    remove_meta_box('postcustom', 'post', 'normal'); // カスタムフィールド
    remove_meta_box('trackbacksdiv', 'post', 'normal'); // トラックバック
    remove_meta_box('commentstatusdiv', 'post', 'normal'); // コメント設定
    remove_meta_box('commentsdiv', 'post', 'normal'); // コメント一覧
}
add_action('admin_menu', 'remove_post_metaboxes');

6. グーテンベルグのカラーパレットを独自定義する

テーマに合ったカラーパレットを設定し、編集画面での色選択肢を限定します。

add_theme_support('editor-color-palette', array(
    array(
        'name'  => __('メインカラー', 'themeLangDomain'),
        'slug'  => 'main-color',
        'color' => '#0073aa',
    ),
    array(
        'name'  => __('アクセントカラー', 'themeLangDomain'),
        'slug'  => 'accent-color',
        'color' => '#d54e21',
    ),
));

不要な機能の無効化

WordPressの初期状態では不要な機能や出力が多くあります。セキュリティや表示速度向上のために、以下のような処理で無効化できます。

7. コメント機能とトラックバック機能を完全に無効化する

コメント欄を一切使わない場合におすすめの設定です。

function disable_comments_support() {
    remove_post_type_support('post', 'comments');
    remove_post_type_support('page', 'comments');
    remove_post_type_support('post', 'trackbacks');
    remove_post_type_support('page', 'trackbacks');
}
add_action('init', 'disable_comments_support');

add_filter('comments_open', '__return_false');
add_filter('pings_open', '__return_false');
add_filter('comments_array', '__return_empty_array');

8. 自動整形(オートフォーマット)を無効にする

WordPressは投稿内容に自動で<p>などを挿入します。これを防ぐ設定です。

remove_filter('the_content', 'wpautop');
remove_filter('the_excerpt', 'wpautop');
remove_filter('comment_text', 'wpautop');

9. wp_head()で不要なタグを削除

SEOや高速化の観点から、出力されるメタ情報を減らします。

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');

10. 絵文字(Emoji)機能を無効化する

不要なJavaScriptとCSSの読み込みを減らすことができます。

function disable_emojis() {
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_action('admin_print_styles', 'print_emoji_styles');
    remove_filter('the_content_feed', 'wp_staticize_emoji');
    remove_filter('comment_text_rss', 'wp_staticize_emoji');
    remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
}
add_action('init', 'disable_emojis');

11. Gutenbergブロックエディタ用スタイルの読み込みを無効化する

不要なスタイルシートを除外して、読み込みを軽くします。

function remove_block_library_css(){
    wp_dequeue_style('wp-block-library');
    wp_dequeue_style('wp-block-library-theme');
}
add_action('wp_enqueue_scripts', 'remove_block_library_css', 100);

12. oEmbed機能を無効化する(外部コンテンツの自動埋め込み)

外部サイト(YouTubeなど)の自動埋め込みを完全に停止します。

function disable_embeds_code_init() {
    remove_action('rest_api_init', 'wp_oembed_register_route');
    remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
    remove_action('wp_head', 'wp_oembed_add_discovery_links');
    remove_action('wp_head', 'wp_oembed_add_host_js');
    add_filter('embed_oembed_discover', '__return_false');
}
add_action('init', 'disable_embeds_code_init', 9999);

注意点と便利なTips

テーマの更新に注意!

functions.phpはテーマファイルの一部なので、親テーマを直接編集するとテーマ更新時に上書きされてしまう可能性があります。対策としては以下のどちらかをおすすめします。

  • 子テーマ(Child Theme)を作成してfunctions.phpを編集する
  • コードスニペット系のプラグインを使って管理する

関数名は被らないように

WordPressや他のプラグインで使われている関数名と被るとエラーの原因になります。**prefix(接頭語)**をつけて関数名を工夫すると安全です。

例:

function mytheme_custom_function() {
    // 何かの処理
}

まとめ:functions.phpでできることを少しずつ増やそう

functions.phpは、WordPressテーマにオリジナル機能を追加できる「魔法のファイル」です。慣れないうちは難しく感じるかもしれませんが、少しずつコピー&ペーストから始めて、理解を深めていきましょう。

テーマに手を加える際は必ずバックアップを取ること、そしてできれば子テーマを使って安全にカスタマイズすることを忘れずに!

Contact

ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい

ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。

デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。