トップページにアクセスした時に簡単なロゴアニメーションを表示(スプラッシュ画面)させてみました。

SWELLでトップページでロゴアニメーションするローディング画面を作成する方法
ブログパーツ、CSS、PHPで作成できます。
ブログパーツを新規作成し、背景用にフルワイドブロックを配置します。
その中にロゴ画像を入れます。
ローディング画面は装飾として扱うため、画像のリンク先は「なし」にし、ボタンや入力欄は配置しません。
フルワイドブロックの追加CSSクラスにはloader-overlayと記述しておきます。

画像では境目がわかりやすいようにフルワイドの背景色をグレーにしていますが、実際のサイトでは黒にしています。
外観 → カスタマイズ → 追加CSS、または子テーマのstyle.cssのどちらか一方に以下のCSSを挿入してください。
今回はロゴ部分はスケールとフェードのアニメーション、フルワイドの部分にフェードのアニメーションを入れております。
この部分は好きなように変更してみてください。
/* ローディング画面表示 */
.loader-overlay {
position: fixed;
top: 0;
left: 0;
z-index: 9999;
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
pointer-events: none; /* オーバーレイの下にある要素へのクリックを妨げない */
animation: overlayFadeOut 2.5s 2s forwards;
}
.loader-overlay img {
width: 360px; /* PCのロゴ画像のサイズ */
opacity: 0;
transform: scale(0.9); /* 初期状態は少し小さく */
animation: logoFadeZoom 1.5s ease-out forwards, logoFadeOut 1.5s 1.5s ease-out forwards; /* ロゴのフェードインとフェードアウトアニメーション */
}
@media screen and (max-width: 959px) {
.loader-overlay img {
width: 180px; /* スマホのロゴ画像のサイズ */
}
}
/* ローディング画面全体のフェードアウトアニメーション */
@keyframes overlayFadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
visibility: hidden;
}
}
/* ロゴのズームインとフェードインのアニメーション */
@keyframes logoFadeZoom {
0% {
opacity: 0;
transform: scale(0.9); /* 少し小さい状態から始める */
}
100% {
opacity: 1;
transform: scale(1); /* 徐々にフェードインしながら元のサイズに */
}
}
/* ロゴがフェードアウトのアニメーション */
@keyframes logoFadeOut {
0% {
opacity: 1;
transform: scale(1); /* フェードアウト前の状態を維持 */
}
100% {
opacity: 0;
transform: scale(1); /* サイズは維持したままフェードアウト */
}
}
@media (prefers-reduced-motion: reduce) {
.loader-overlay { display: none; animation: none; }
.loader-overlay img { animation: none; }
}
子テーマのfunctions.php、またはCode Snippetsプラグインのどちらか一方に以下のコードを追加します。
add_action('wp_body_open', function () {
if ( ! is_front_page() ) { return; }
echo '<div aria-hidden="true" inert>' . do_shortcode('[blog_parts id="270"]') . '</div>';
});トップページを更新し、アニメーションが始まってから約4.5秒後に画面全体が消えることを確認します。
これは読み込み完了を待つ処理ではなく、ページを開いてからの時間で終了する演出です。

Tabキーでローディング画面内のロゴへ移動せず、本文のリンクやボタンを操作できることを確認します。
PCとスマホで、終了後に透明な画面が残らないこと、トップページ以外には表示されないことも確認してください。
OSで動きを減らす設定を有効にした場合は、演出を表示しないCSSを用意しています。
元に戻す場合は、追加したPHPとCSSを削除してください。
サイト型トップページの作り方は、こちらにまとめています。

ブログパーツの実行と動作確認
PHP内のdo_shortcodeには角かっこ1組の実行用ショートコードを渡します。
二重の角かっこでは文字として出力され、ブログパーツのロゴが表示されません。
実ブログパーツを用意したトップページで、表示後にロゴと背景が消えること、投稿ページには出ないこと、リンク付き画像を置いた検証でもTabの移動先から外れることを確認しました。
動きを減らすOS設定とWP Rocketの遅延・キャッシュ併用は、今回の実操作には含めていません。

トップへの入り方でスプラッシュの動作を確認する
| 操作 | 確認する結果 |
|---|---|
| URLを直接開く | トップのページ生成時にローダーを出す |
| Pjaxで対象外からトップへ移動 | wp_body_openの領域は追加されないため、このPHPでは再表示しない |
| 通常読込でトップから対象外へ移動 | ローダーとinertの領域が移動先に残らない |
このスプラッシュはトップを通常読み込みしたときの演出として使います。
サイト内の移動ごとに演出を再実行したい場合は、掲載PHPの対象範囲を広げるだけでは対応できません。
SWELLで通常読込へ戻すときは、変更前の高速化設定を記録し、Pjaxによるページ遷移を無効にしてから対象外とトップを往復します。
確認後に以前のPjax設定を復元した場合は、直接開いた場合とリンクで移動した場合を再度分けて確認します。
2026年10月3日のWordPress 7.1.2 / SWELL 2.19.0では、実Pjaxで対象外からトップに入るとローダーが追加されず、通常読込でトップから離れるとローダーとinertの要素が残らないことを確認しました。

まとめ
個人的には、サイトのローディングアニメーション表示を好みません。
演出が必要な場合に限って使用してください。
もっと凝ったものを作りたい場合はプラグイン等を使うことをおすすめします。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/WAZA-codeにもまとめています。
これは読み込み完了を検知する処理ではなく、一定時間だけ表示する装飾です。
OSで動きを減らす設定を有効にしている場合は表示せず、背景のリンクや操作もブロックしません。
同じローディング画面を表示する処理がすでにある場合は、掲載コードを重ねて登録しないでください。



