WordPressサイトを制作する際、「あの機能もこの機能もプラグインで…」と追加していくと、サイトの表示速度がどんどん遅くなり、セキュリティの穴も増えてしまいます。
プロのWeb制作者は、ちょっとした設定変更であればプラグインを使わず、functions.php に短いコード(スニペット)を書いて対応します。
今回は、私がWeb制作の実務で「新しいテーマを作ったら必ず最初に入れる鉄板コード5選」を厳選してご紹介します。すべてコピペで使えるので、ぜひご自身のサイトにも取り入れてみてください!
functions.php は少しでも記述を間違えるとサイトが真っ白になりアクセスできなくなります。必ず事前にFTPソフトなどでバックアップを取るか、Localなどのテスト環境で動作確認を行ってから本番へ反映してください。
目次
1. WordPressのバージョン情報を隠す(セキュリティ対策)
WordPressはデフォルト状態だと、HTMLのソースコード(headタグ内)に「どのバージョンのWordPressを使っているか」を出力してしまいます。古いバージョンだとハッカーに脆弱性を狙われやすくなるため、非表示にするのが鉄則です。
/* WordPressのバージョン情報を非表示にする */
remove_action( 'wp_head', 'wp_generator' );
2. ログイン画面のエラーメッセージを曖昧にする
ログインに失敗した際、「ユーザー名が間違っています」や「パスワードが違います」と親切に教えてくれる機能ですが、悪意のある攻撃者にヒントを与えてしまいます。エラー内容を一律のメッセージに変更して防ぎます。
/* ログインエラーメッセージの変更 */
add_filter( 'login_errors', function() {
return 'ログイン情報が間違っています。';
});
3. SVG画像のアップロードを許可する
最近のWeb制作では、ロゴやアイコンに画質が劣化しない「SVG画像」を使うのが当たり前になりました。しかしWordPressは初期状態でSVGをアップロードできないため、以下のコードで許可します。
/* SVGアップロードを許可 */
function add_svg_to_upload_mimes( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'upload_mimes', 'add_svg_to_upload_mimes' );
4. セルフピンバックを無効化する
自分のブログ内の過去記事に内部リンクを貼った際、毎回「ピンバック承認待ち」の通知が来て煩わしい思いをしたことはありませんか?以下のコードで、自分のサイト内同士の通知だけを停止できます。
/* セルフピンバックを停止する */
function no_self_ping( &$links ) {
$home = get_option( 'home' );
foreach ( $links as $l => $link ) {
if ( 0 === strpos( $link, $home ) ) {
unset( $links[$l] );
}
}
}
add_action( 'pre_ping', 'no_self_ping' );
5. ウィジェットのブロックエディターを無効化(旧仕様に戻す)
WordPress5.8以降、ウィジェット管理画面もブロックエディター化されましたが、実務の納品では「昔のシンプルなウィジェット画面の方がクライアントが使いやすい」というケースが多々あります。以下の1行で旧仕様にパッと戻せます。
/* ウィジェットのブロックエディターを無効化 */
remove_theme_support( 'widgets-block-editor' );
今回ご紹介した5つの機能は、どれも専用のプラグインが存在します。しかし、たった数行のコードで済むものをわざわざ重いプラグインで実装するのは非効率です。
functions.php を上手に活用して、軽量で安全なスマートなサイト構築を目指しましょう!
