自作テーマのfunctions.phpを紹介

投稿日:2025.7.15

更新日:2025.7.17

私は仕事で、WordPressのテーマを毎回ゼロから自作しています。
というのも、サイトごとにデザインが異なるため、既存の有料・無料テーマを使ったり、子テーマを作ったりするよりも、自作したほうが結果的に早く仕上がるからです。
過去に自作したテーマを改造するよりも、新しく作る方が効率的な場合がほとんどです。

とにかく「スピード」が求められる現場です。

今回は、私がfunctions.php によく書いているコードを紹介したいと思います。

css,jsの読み込み

function my_scripts_method()
{
    wp_enqueue_style('css-destyle', get_template_directory_uri() . '/css/destyle.css', "", '20250715');
    wp_enqueue_style('css-layout', get_template_directory_uri() . '/css/layout.css', "", '20250715' . time());

    wp_deregister_script('jquery');
    wp_enqueue_script('jquery', get_template_directory_uri() . '/js/jquery-3.7.1.min.js');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

4行目のwp_enqueue_styleの第4引数の.time()はキャッシュ対策です。最終納品時に削除します。たまにサーバー側でキャッシュが強力でcssの変更が反映されない場合があるので。

jQueryのバージョンを確定させたいので、6行目のwp_deregister_script(‘jquery’);でwordpress内のjQueryの読み込みを解除して、7行目でテーマファイル内にダウンロードしてあるjQueryを読ませています。

基本的にCDN(サーバーキャッシュ)は使っていません。
メリット(スピードアップ)よりもCDNにアクセスできなくなる心配があるので。
案件によっては作りっぱなしの場合もあるので、なるべくメンテナンスしなくてよいようにしています。

不要なヘッダー内の書き出しを削除

// 管理バーを非表示にする(フロントエンドの上部バー)
add_filter('show_admin_bar', '__return_false');

// 絵文字関連のスクリプトとスタイルを削除(パフォーマンス改善)
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');

// WordPressバージョン情報(generatorタグ)を非表示にする(セキュリティ対策)
remove_action('wp_head', 'wp_generator');

// Windows Live Writer 用の EditURI を非表示にする(使用しない場合は不要)
remove_action('wp_head', 'rsd_link');

// Windows Live Writer 用のマニフェストリンクを非表示にする
remove_action('wp_head', 'wlwmanifest_link');

// REST API のリンクタグを非表示にする(APIを使わない場合は不要)
remove_action('wp_head', 'rest_output_link_wp_head');

// oEmbed のディスカバリーリンクを非表示にする(外部埋め込みが不要な場合)
remove_action('wp_head', 'wp_oembed_add_discovery_links');

// oEmbed 用のホスト JavaScript を非表示にする
remove_action('wp_head', 'wp_oembed_add_host_js');

上記をfunctions.phpに書くことで、wordpressが生成するhtmlのヘッダーがすっきりします。
各項目の詳しい内容は調べてください。

不要な画像サイズの自動生成を止める

function remove_default_image_sizes($sizes)
{
    ////unset($sizes['thumbnail']);    // サムネイル
    // unset($sizes['medium']);       // 中サイズ
    unset($sizes['large']);        // 大サイズ
    unset($sizes['medium_large']); // medium_large(WP 4.4以降)
    unset($sizes['1536x1536']); // medium_large(WP 4.4以降)
    unset($sizes['2048x2048']); // medium_large(WP 4.4以降)
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_image_sizes');

add_filter('big_image_size_threshold', '__return_false'); //scaledは生成しない

WordPressでは、投稿に画像を追加すると、自動的に複数サイズの画像が生成されます。
しかし、この機能により多くの画像ファイルが作成され、サーバー容量を圧迫してしまうことがあります。

今回は「medium」と「サムネイル」サイズ以外の画像は不要なため、それ以外のサイズの画像は自動生成しないように設定しました。

さらに、13行目では「-scaled」画像の生成も停止するように記述を追加しています。
(※WordPress 5.3以降、大きな画像をアップロードすると、自動的に「-scaled」付きの画像が生成されます)

このように、作成するサイトの画像の最大表示幅が明確に決まっている場合、不要なサイズの画像を生成しない設定にすることで、サーバー容量の節約になります。

実際の動作確認

5000×4000ピクセルのJPEG画像をサンプルとして本投稿に追加し、
wp-content/uploads/2025/07/ フォルダ内を確認したところ、以下の3つのファイルだけが保存されていました。

アップロードした画像

uploadsフォルダ内の画像

閲覧数:94 ビュー