2026年8月19日
wordpress
WordPressテーマ『Avada』のTips21選!
WordPressテーマ『Avada』のTips21選!
WordPressのテーマは世界に数万種類あります。無料・有料含め、検索すれば際限なく出てきます。そのなかで、私が長年クライアントワークで一貫して使い続けているテーマが Avada です。
日本ではまだ知名度が高いとは言えません。日本製のテーマも優秀なものが増えてきました。しかし、Avadaも世界累計販売数は90万件を超えており、Themeforestで長期間ベストセラーの座を維持しているモンスターテーマ。なかなかの優れものです。
Avadaとはなにか
Avadaは、ThemeForestで販売されているWordPress有料テーマです。価格は約$69(買い切り)。一度購入すれば更新も含めて使い続けられます。
「ページビルダー系のテーマはたくさんあるけど何が違うの?」という疑問は当然です。Avadaの特徴を一言で言うなら、「デザインの自由度と安定性を両立した、本格制作向けのall-in-oneテーマ」です。
- Fusion Builder(独自ページビルダー)で、コーディングなしにレイアウトを組める
- Avada Layout Builderで、ヘッダー・フッター・アーカイブページまで完全にカスタマイズできる
- Global Optionsでサイト全体の色・フォント・余白を一括管理できる
- 100以上のデモサイトがそのままインポートできる
- Post Cards、Dynamic Content、Mega Menuなど、プラグインなしで実現できる機能が標準搭載
競合テーマ(Divi、Elementor、Brizy等)と比べたとき、Avadaが優れている点は 「見た目の自由度がありながら、テーマとしての一体感が保たれている」 ことだと感じています。ElementorはUIが直感的ですが、プラグインとして後付けするためテーマとの噛み合わせで問題が起きやすい。Avadaはテーマ自体にすべてが統合されているため、動作が安定しています。
全くオリジナルのデザインを実装できる
「テーマを使う=デザインの自由度が下がる」というイメージを持っている方もいるかもしれませんが、Avadaに限ってはそれが当てはまりません。
Avadaのコンテナ・カラム・エレメントはすべてCSSクラスとIDを付与できます。子テーマのCSSで自由にスタイルを追加・上書きでき、JavaScript(functions.phpや外部JSファイル)との連携も問題なく行えます。つまり、「Avadaをベースに使いながら、完全にオリジナルのデザインを実装すること」が可能です。
私自身、Avadaのデフォルト機能だけでは実現できないインタラクション(ページイントロアニメーション、Post Cardsの独自ホバーエフェクト、別ページからのスムーススクロール等)を子テーマのCSS+JSで実装してきました。その過程で得た知見=「Avadaならではのハマりどころと解決策」を本記事でまとめます。
AvadaはGUIで多くのことができる反面、「なぜそう書かなければならないのか」がわかりにくい独自の挙動があります。公式ドキュメントに載っていないことも多く、デバッガーで地道に調べるしかない場面も多いです。この記事がその参考になれば幸いです。

CSS基礎:知っておくべき2つの落とし穴
Avadaの要素を一時的に隠したいとき、display: none を使うと 子要素まで完全に消えます。z-index の値も !important も position: fixed も関係なく、子はすべて非表示になります。
一方、visibility: hidden であれば、子要素で visibility: visible を指定することで個別に表示を復元できます。「親は隠しつつ、特定の子要素だけ表示したい」場合は visibility: hidden を使いましょう。
/* NG: 子も全員消える */
.fusion-header-wrapper { display: none !important; }
/* OK: 子が visibility: visible で上書きできる */
.fusion-header-wrapper { visibility: hidden !important; pointer-events: none !important; }
/* 子要素だけ表示 */
.my-nav-container { visibility: visible !important; }
2. pointer-events: none は子要素に継承されない
親要素に pointer-events: none を設定しても、子要素はデフォルトで pointer-events: auto のままです。オーバーレイ要素を透過させたつもりが、子要素がクリックを拾い続けてしまいます。
/* 親だけでは不十分 */
#intro-overlay.exit { pointer-events: none; }
/* 子要素も明示的に指定する */
#intro-overlay.exit * { pointer-events: none !important; }
Avada固有の挙動を知る
3. z-indexはCSSカスタムプロパティ経由で上書きする
Avadaのコンテナ設定でz-indexを指定すると、--awb-z-index: 9999 というCSSカスタムプロパティがインラインスタイルで設定されます。子テーマCSSから !important 付きで z-index を直接指定すれば上書きできます。
/* Avadaが設定した z-index(9999)を上書きする */
#my-element {
z-index: 10001 !important;
}
Avadaのコンテナやカラムはデフォルトで overflow: hidden になっている場合があります。::before / ::after 疑似要素で要素の外にはみ出すデザインを実装しようとすると、はみ出した部分がクリップされて見えなくなります。
/* はみ出しが消える場合 → overflow: visible を明示 */
.my-title-element.fusion-title {
overflow: visible !important;
}
5. ::first-line で1行目だけスタイルを変える
Avadaのタイトルエレメントで「1行目は英語キャプション(小さく)、2行目は日本語見出し(大きく)」といったデザインにしたい場合、::first-line 擬似要素が使えます。
/* 全体(2行目以降)のスタイル */
.my-title.fusion-title .fusion-title-heading {
font-size: 32px !important;
}
/* 1行目だけ上書き */
.my-title.fusion-title .fusion-title-heading::first-line {
font-size: 12px;
letter-spacing: 0.3em;
}
::first-line で使えるCSSプロパティは限定的です。font・color・letter-spacingは使えますが、padding・marginは効きません。
6. カラムにはCSS IDとCSS Classの両方がある
Avadaのカラム設定には「CSS Class」と「CSS ID」の入力欄が両方あります。CSS Classはスペース区切りで複数指定できます。IDは1つだけ・ページ内ユニーク。IDセレクタは特異度(specificity)が高くなりすぎるため、多用は避けた方が管理しやすいです。
7. ショートコード内コンテンツを外部から直接書き換えてはいけない
Avada Fusion Builderのショートコードは複雑に入れ子になっています。PHPやPython等のスクリプトでDBを直接書き換えると、エスケープ処理の違いにより CR文字の混入・ショートコード構造の破壊が起きます。コンテンツの変更は必ず管理画面から行うこと。
安全に変更できる範囲は以下です:
- 子テーマの
style.cssへの追記・修正 functions.phpへのフック追加- 管理画面 Fusion Builder からのパラメータ変更
8. カラーはCSSカスタムプロパティで参照する
Avada Global Options で設定したカラーパレットは、CSSカスタムプロパティとして子テーマCSSから参照できます。カラー値をハードコードするより、グローバル設定と連動させる方がサイト全体の色変更に対応しやすくなります。
/* Avada カラーパレットの参照 */
background-color: var(--awb-color4);
color: var(--awb-custom_color_3);
/* WordPress プリセット形式(ダブルハイフン) */
background-color: var(--wp--preset--color--awb-color-1);
--awb-color4(シングルハイフン)と --wp--preset--color--awb-color-1(ダブルハイフン)は別物です。混同すると値が参照できません。
9. コンテナの背景だけをはみ出させる方法
「コンテンツ幅はそのままに、背景色・背景画像だけをカラムの外側にはみ出させたい」という場面では、padding で広げるとコンテンツ幅が変わってしまいます。::before 疑似要素を使うのが正解です。
.my-col > .fusion-column-wrapper {
position: relative;
z-index: 0;
}
.my-col > .fusion-column-wrapper::before {
content: '';
position: absolute;
inset: -20px; /* 四方20pxはみ出す */
background-color: var(--awb-color4);
border-radius: 20px;
z-index: -1;
pointer-events: none;
}
10. Layout Editorのヘッダーは適用条件(Conditions)を確認する
Avada Layout Editorで作成したヘッダーレイアウトは、Conditions(適用条件)で表示対象を指定します。「フロントページ専用」で作成すると、他のページに変更が反映されません。全ページ共通にしたい要素は Entire Website または All Singular を条件に設定しましょう。
また、Layout Builder製のヘッダーのクラスは .fusion-tb-header です。標準ヘッダーの .fusion-header-wrapper とは別物なので、CSSで操作するときは間違えないようにしてください。
11. 固定ページにアイキャッチ画像が自動表示される問題
固定ページでアイキャッチ画像を設定したとき、コンテンツエリアの上部に自動表示されてしまう場合があります。これはAvada Global Optionsの設定が原因です。
Avada > Global Options > Miscellaneous > Featured Images on Pages を OFF にします。
12. 子テーマCSSを更新してもキャッシュで反映されない問題
Avadaは全CSSを独自にコンパイル・キャッシュします。style.css をサーバーに上書きアップロードしても、ブラウザのキャッシュをクリアするだけでは反映されないことがあります。
Avada > Performance の最下部にある 「Reset Avada Caches」 を実行してください。これで fusion-styles・fusion-scripts フォルダが削除され、次のアクセス時に再生成されます。子テーマCSSを更新したあとは必ずこの操作を行いましょう。
URLとスクロール系のハマりどころ
13. メニューURLの末尾スラッシュ問題
WordPressはディレクトリ形式のURLに末尾スラッシュがない場合、301リダイレクトでスラッシュ付きに転送します。ハッシュ(アンカー)付きURLでこのリダイレクトが発生すると、ブラウザによってはハッシュ部分が消失します。
/* NG: 301リダイレクト → ハッシュが消える可能性 */
https://example.com/about#section
/* OK: リダイレクトなし・ハッシュ確実に届く */
https://example.com/about/#section
Avadaのメニュー設定でアンカーリンクを入力するときは、必ず末尾スラッシュありでURLを入力してください。
14. 別ページからの同一サイト内アンカーにスムーススクロールを効かせる
別ページから page/#anchor 形式でリンクした場合、ブラウザはページロード後にネイティブで即時ジャンプします。Avadaのスムーススクロールはこのタイミングに介入できません。
解決策は、wp_head(priority: 1)に以下のスクリプトを置くことです。ページロード時点でハッシュをURLから除去し、ロード完了後に独自スクロールを実行します。
// wp_head (priority: 1) に記述
if (window.location.hash) {
var savedHash = window.location.hash;
history.replaceState(null, '', window.location.pathname + window.location.search);
window.addEventListener('load', function () {
var target = document.querySelector(savedHash);
if (!target) return;
setTimeout(function () {
var offsetTop = target.getBoundingClientRect().top + window.scrollY;
smoothScrollTo(offsetTop, 800); // 独自スムーススクロール関数
}, 150);
});
}
wp_footer ではなく wp_head(priority: 1) に置くのが必須です。footer に置いた時点ではブラウザがすでにジャンプを完了しています。
15. タイトルエレメント内のアンカーリンクにスムーススクロールが効かない
Avadaのタイトルエレメントに href="#anchor" 形式のリンクを設定しても、Avadaのスムーススクロールが動作せず即時ジャンプになります。Avadaのスムーススクロール処理が fusion-title 内の タグを対象外にしているためです。
独自JSで対処します:
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('.my-element a[href^="#"]').forEach(function (link) {
link.addEventListener('click', function (e) {
var href = link.getAttribute('href');
if (!href || href === '#') return;
var target = document.querySelector(href);
if (!target) return;
e.preventDefault();
target.scrollIntoView({ behavior: 'smooth' });
});
});
});
Post Cardsのカスタマイズ
16. ホバーオーバーレイは「画像エレメント基準」で作る
Post Cardsエレメントで画像ホバー時にオーバーレイ+テキストを重ねる実装をする場合、.post-card(カード全体)を基準にすると、タブレット等のブレイクポイントでカードの高さと画像の高さが一致せず、オーバーレイが画像下部に届かない問題が起きます。
画像エレメント自体に ::after でオーバーレイを描くのが正解です。どのブレイクポイントでも画像サイズと完全一致します。
/* 画像エレメントにクラス pc-image を付与 */
.pc-image {
position: relative !important;
overflow: hidden !important;
cursor: pointer;
}
.pc-image::after {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.55);
opacity: 0;
transition: opacity 0.3s ease;
pointer-events: none;
z-index: 1;
}
.pc-image:hover::after { opacity: 1; }
テキストエレメントは画像の外側(兄弟要素)にあるため、CSSの position: absolute だけでは正確に重ねられません。getBoundingClientRect() で画像の実座標を取得してJSで動的に配置します。
17. アイキャッチなし時のデフォルトサムネイル
アイキャッチ未設定の記事で Post Cards の画像エリアが空白になる問題です。AvadaはアイキャッチなしのときにWordPress標準の get_the_post_thumbnail() を呼ばず、独自の .fusion-placeholder-image という要素を出力します。そのため post_thumbnail_html フィルター(PHP)は Post Cards には効きません。
CSSで .fusion-placeholder-image に背景画像を設定するのが最もシンプルな解決策です:
.fusion-placeholder-image {
background-image: url('子テーマURL/assets/img/default-thumbnail.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.fusion-placeholder-image はアイキャッチなし時にのみ出力されるので、チラつきは発生しません。
アニメーション・インタラクション系
18. フェードインはCSSではなくJSのinline styleで制御する
Avadaの画像エレメント(.fusion-imageframe)に子テーマCSSで transition: opacity を書いても、Avadaの動的CSS(fusion-dynamic-css)が後から読み込まれ transition: var(--awb-filter-transition) で上書きするため効きません。
役割を3つに分離するのが確実な解決策です:
- CSS → 初期状態を
opacity: 0にするだけ - クラス名 → JSがターゲットを見つけるための目印
- JS → inline styleで
transitionとopacityを直接セット
/* CSS: 初期状態のみ */
.my-fadein { opacity: 0; }
/* JS: フェード実行 */
document.querySelectorAll('.my-fadein').forEach(function (el) {
el.style.transition = 'opacity 1.5s ease';
el.style.opacity = '1';
});
JSのinline styleはAvadaの動的CSSより優先度が高いため、確実に効きます。
ページイントロ表示中にヘッダーを visibility: hidden で隠していた場合、イントロ終了後にページが数十px下にシフトする現象が起きることがあります。
原因は、visibility: hidden の親要素内にある画像はlazysizesのIntersection Observerに「不可視」と判定され、読み込みが保留されるためです。 visibility: visible に戻った瞬間に画像が読み込まれてヘッダーの高さが変わり、コンテンツがシフトします。
対処法は2つセットで行います:
① 対象に正しいヘッダーのクラスを指定する
/* Layout Builder製ヘッダーは .fusion-tb-header */
body.intro-active .fusion-header-wrapper,
body.intro-active .fusion-tb-header {
visibility: hidden !important;
pointer-events: none !important;
}
② ヘッダーに min-height を設定してシフトを防ぐ
.fusion-tb-header {
min-height: 110px; /* 実測値(ロゴ画像ロード後の高さ)*/
}
20. タイトルエレメントを正円ボタンにする
Avadaのタイトルエレメント(H2〜H6)にCSSクラスを付けて正円のボタンにする実装です。カラム幅を円のサイズとして使えるため、グリッドで複数並べるデザインに向いています。
.circle-btn.fusion-title {
position: relative;
aspect-ratio: 1 / 1;
border-radius: 50%;
border: 1px solid;
border-color: #333 !important; /* !important 必須(後述) */
display: flex !important;
align-items: center !important;
justify-content: center !important;
box-sizing: border-box;
cursor: pointer;
}
/* Avadaのセパレーターを非表示 */
.circle-btn.fusion-title .title-sep-container,
.circle-btn.fusion-title .awb-title-spacer { display: none !important; }
/* リンク(a)を円全体に拡張 */
.circle-btn.fusion-title a {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
text-decoration: none;
}
title.css が .fusion-title { border-bottom-color: var(--awb-sep-color); } を設定しており、 border: 1px solid の下辺の色だけが上書きされてしまいます。正円の下部だけグレーになる現象が起きるため、border-color: [色] !important で4辺を統一してください。
また、Avadaのセパレーターのクラスは title-sep-container(fusion- プレフィックスなし)です。fusion-title-sep-container は誤りなので注意してください。
移設・運用
21. All-in-One WP Migration でURL置換する際の正しい設定
WordPressをサブディレクトリにインストールし、サイトアドレスをルートに向けている構成(siteurl ≠ home)でAll-in-One WP Migrationを使う場合、エクスポート時のURL検索・置換で迷いがちです。
WordPressのDBには、URLが2種類保存されています:
siteurl(WordPress アドレス)= コアファイルの設置場所 → 例:http://example.com/renewalhome(サイトアドレス)= ブラウザでアクセスするURL → 例:http://example.com
メディアファイル・画像のURLは siteurl(サブディレクトリを含む方)ベースで記録されます。内部リンク・ナビゲーションは home(ルートURL)ベースで記録されます。
正解は「2行セットで設定する」です:
| 行 | 検索(Find) | 置換(Replace) |
|---|---|---|
| 1行目 | http://example.com/renewal | https://新サーバー.com/path |
| 2行目(+ADDで追加) | http://example.com | https://新サーバー.com/path |
末尾スラッシュは付けないのが正解です。スラッシュなしで検索すれば、末尾スラッシュあり・なし両方にマッチします。
インポート後は 管理画面 → 設定 → パーマリンク → 保存 を一度実行してください。
まとめ
Avadaは「GUIで操作できる範囲が広い」がゆえに、その内側の仕組みを理解していないとカスタマイズで詰まることがあります。公式ドキュメントには書かれていない挙動も多く、ブラウザのデベロッパーツールと地道な検証で積み上げてきた知見が今回紹介したTipsです。
特に実務で頻度が高いのは 「キャッシュリセット」「visibility と lazysizes の関係」「URL置換の2行セット」 あたりかと思います。同じところでハマっている方の参考になれば幸いです。
今後も知見が溜まり次第、追記していく予定です。

