WordPressで絵文字・jQuery・REST API・タイトルタグを最適化してサイトを軽量化する

カテゴリー お知らせ

WordPressのfunctions.phpでよく使うカスタマイズを、チェックボックスで選ぶだけで、コードをまとめて生成するWP-functions generatorをリニューアルしました。

そこで使っているコードの解説です。

WordPressのhead要素の余計なタグを削除して、軽量&安全にする方法まとめに続いて、今回はもう一歩踏み込んで、

  • 絵文字(emoji)機能
  • jQuery の読み込み
  • REST API の制限
  • <title>(title-tag サポート)

といった「自動で読み込まれている機能」を、ちゃんと理解してから取捨選択する記事です。

前提:どこに書くコードなのか

すべて テーマ側の functions.php(できれば子テーマ) に書く想定です。

  • パス例:wp-content/themes/your-theme/functions.php
  • 子テーマを使っている場合:親テーマのアップデートで消えないように、子テーマ側に記述するのがおすすめです。

1. 絵文字(emoji)機能を無効化する

WordPress は、旧ブラウザでも絵文字を表示できるようにするため、
デフォルトで JS / CSS を head に読み込んでいます。

最近のブラウザ前提のサイトでは、不要なことが多く、軽量化のためにオフにするのが定番です。

やること

  • 絵文字用の JS / CSS を削除
  • SVG 絵文字の URL を無効化

コード(functions.php)

// 絵文字(emoji)機能を無効化
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' );
add_filter( 'emoji_svg_url', '__return_false' );

影響

  • 絵文字を打ち込んだとしても、ブラウザが標準で表示できる範囲でそのまま表示されます。
  • 古い IE など、かなりレガシーなブラウザ向けの互換対応を捨てる代わりに、
    HTTPリクエストを数本減らすことができるイメージです。

通常の企業サイトやブログであれば、オフにして問題ないことが多いです。

2. jQuery の読み込みを最適化する

WordPress は、フロント側でも管理画面でも、標準で jquery を登録・読み込みできます。

  • 「テーマもプラグインも、まったく jQuery を使っていない」 → 完全に外す選択肢あり
  • 「jQuery は必要だけど、描画を少しでも早くしたい」 → フッターで読み込む

前提の注意

  • 完全に読み込まない」と「フッターに移動する」は、同時に有効にしないでください。
  • どちらか一方を採用し、不要な方はコメントアウトする運用が安全です。

2-1. フロント側の jQuery を読み込まない

「本当にどこでも jQuery を使っていない」 場合だけにしてください。
jQuery を前提にしているプラグインやテーマがあると、普通に壊れます。

コード(functions.php)

// フロント側のデフォルト jQuery を読み込まない(管理画面はそのまま)
add_action( 'wp_enqueue_scripts', function () {
  if ( ! is_admin() ) {
    wp_deregister_script( 'jquery' );
  }
} );

チェックポイント

  • フロントでの HTML を確認し、jquery.js が読み込まれていないこと
  • コンソールエラー($ is not defined など)が出ていないこと

2-2. jQuery をフッターで読み込む

jQuery を使うが、レンダリングをブロックされたくないときのパターンです。

コード(functions.php)

// jQuery をフッターで読み込む
add_action( 'wp_enqueue_scripts', function () {
  if ( ! is_admin() ) {
    wp_script_add_data( 'jquery', 'group', 1 );
  }
} );

WordPress では、group = 1 を設定することで、
wp_footer() 側で jQuery が読み込まれるようになります。

注意点

  • フッターで読み込むと、「DOM構築前提のスクリプト」との相性が変わることがあります。
  • jQuery に依存する自作スクリプトは、jQuery(document).ready(...) などで DOM 準備後に実行するのが基本です。

3. REST API をログインユーザーのみに制限する

WordPress REST API は、投稿データなどを JSON で取得できる便利な機能ですが、
使わないサイトであれば、外部からのアクセスを制限したい場面もあります。

ここでは、**「ログインしているユーザーだけ REST API を使える」**ようにするコードです。

コード(functions.php)

// REST API をログインユーザーのみに制限
add_filter( 'rest_authentication_errors', function ( $result ) {
  if ( ! empty( $result ) ) {
    return $result;
  }

  if ( ! is_user_logged_in() ) {
    return new WP_Error(
      'rest_forbidden',
      'REST API はログインユーザーのみ利用可能です。',
      array( 'status' => 401 )
    );
  }

  return $result;
} );

これでどうなるか

  • 未ログインユーザーから https://example.com/wp-json/wp/v2/posts などにアクセスすると、
    401エラー(認証エラー) が返るようになります。
  • 管理画面にログインしているユーザーは、そのまま REST API を利用可能です。

注意点

REST API はいまや、ブロックエディタ(Gutenberg)やサイトヘルスなど、管理画面の内部でも多用されています。

  • ブロックエディタを使っている
  • フロント側で headless 的に REST を読んでいる
  • プラグインが REST API を前提としている

こういった場合、このコードを有効にすると 機能が壊れる可能性が高いです。

  • クラシックエディタ+REST非利用の単純サイト 向けの設定、と考えたほうが安全です。

4. <title> を WordPress に任せる(title-tag サポート)

古いテーマでは、header.php にこんなコードが書かれていることがあります。

&lt;title>固定のサイトタイトル&lt;/title>

これだと、

  • ページごとのタイトルが変わらない
  • SEO プラグインのタイトル書き換え機能と競合する

といった問題が出ます。
そこで add_theme_support( 'title-tag' ); を使って、タイトル出力を WordPress に任せるのが現代的なやり方です。

コード(functions.php)

// title-tag サポートを有効にする
add_theme_support( 'title-tag' );

header.php 側の修正

<head> 内に 自分で書いている <title>〜</title> を削除します。

&lt;head>
  &lt;!-- ここに &lt;title>...&lt;/title> は書かない -->
  &lt;?php wp_head(); ?>
&lt;/head>

これで、

  • 投稿タイトル
  • アーカイブタイトル
  • SEO プラグイン(All in One SEO / Yoast / SEO SIMPLE PACK など)

が、titleタグの中身を適切にコントロールできる状態になります。

5. まとめ

今回の内容を整理すると、以下のような方針になります。

機能やること向いているサイト
絵文字(emoji)JS/CSSを削除して軽量化通常の企業サイト・ブログ
jQuery 削除wp_deregister_script('jquery')完全にjQuery非依存の静的寄りサイト
jQuery フッター読み込みwp_script_add_data('jquery', 'group', 1)jQueryは必要だが描画を少しでも早くしたい
REST API 制限未ログインから REST を使わせないクラシックエディタ中心・REST非利用
title-tag サポートadd_theme_support('title-tag')ほぼすべて(むしろ必須に近い)

ポイントは、

  • 「何をしているコードか」を理解したうえでオン/オフを決める
  • 「全部盛り」ではなく、サイトの構成と運用方針に合わせて選ぶ

というところです。

その他の記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)