Class CSS widget Invitation di WDP v4 (Pro dan Lite) hampir semuanya sama dengan WeddingPress v3. Script lama gagal karena v4 memindahkan cover undangan ke <body>, sehingga kata selector milik Elementor tidak lagi menemukan targetnya. Perbaikannya: ganti selector dengan .modalx, beri !important pada margin dan padding, lalu rapikan penulisan komentar CSS.


Masalah yang Sering Terjadi Setelah Upgrade ke v4

Banyak pembuat undangan menambahkan sentuhan kecil lewat Custom CSS di widget Invitation: teks "Undangan Pernikahan" di atas foto mempelai, catatan permohonan maaf di bawah tombol "Buka Undangan", atau jarak nama mempelai yang dibuat lebih lega. Setelah plugin diperbarui dari v3 ke WDP v4, sebagian atau semua tambahan itu hilang tanpa pesan error.

Kalau dibiarkan, cover undangan klien tampil berbeda dari desain yang sudah disetujui. Untuk vendor yang mengelola puluhan undangan, mengecek satu per satu tanpa tahu penyebabnya akan memakan banyak waktu.

Perbaikannya cukup di sisi CSS. Struktur widget tetap kompatibel dan pengaturan panel yang lama tetap terbaca.

Dua hal perlu dibedakan sebelum mengubah CSS:

  • Cover tidak muncul sama sekali. Ini bukan masalah CSS. Widget Invitation tidak ditampilkan selama lisensi WDP Pro atau WDP Lite di website itu belum aktif. Cek menu Lisensi lebih dulu.
  • Tampilan widget lain berubah (ikon Audio, kotak Comment Kit 2, garis Timeline). Ini ditangani menu Kompatibilitas v3, bukan Custom CSS. Menu itu tidak mengubah CSS kustom di cover Invitation.

Penyebab Script Custom CSS v3 Tidak Berfungsi

1. Cover dipindah ke <body> sehingga selector kehilangan target

Saat Anda menulis selector di Advanced > Custom CSS, Elementor mengubahnya menjadi class wrapper widget, kira-kira .elementor-element-3f9a2c1. Di v3, cover undangan (.modalx) berada di dalam wrapper tersebut, jadi aturannya kena.

Di v4 dengan Mode Tampilan: Fullscreen (bawaan), cover dipindahkan ke bagian paling luar halaman (<body>) begitu halaman dibuka. Tujuannya agar cover benar-benar menutup layar penuh di tema apa pun. Efek sampingnya, cover tidak lagi berada di dalam wrapper widget, sehingga semua aturan yang diawali selector tidak berlaku.

Jika widget memakai Mode Tampilan: Menyesuaikan Container, cover tidak dipindah dan selector masih bekerja. Meski begitu, .modalx tetap lebih aman karena berfungsi di kedua mode.

2. Pengaturan panel v4 memakai selector yang lebih kuat

Karena cover keluar dari wrapper widget, v4 menulis ulang pengaturan dari panel (margin, padding, warna, tipografi) dengan selector berbasis ID, misalnya:

CSS
#modalx-3f9a2c1 .wdp-text { padding: 0 20px 0 20px; }

Selector ID selalu menang melawan selector class biasa seperti .wdp-text { ... }. Jika margin atau padding juga diisi di panel widget, nilai dari panel yang akan dipakai. Tambahkan !important pada properti custom Anda yang bentrok dengan pengaturan panel.

3. Kesalahan penulisan yang terbawa dari script lama

Beberapa script v3 yang beredar mengandung kesalahan yang juga ikut membuatnya gagal:

Penulisan di script lamaMasalahPerbaikan
/custom posisi teks/Bukan komentar CSS. Browser menganggapnya bagian selector, lalu membuang aturan sesudahnya/* custom posisi teks */
@import url(...) di tengah CSS@import hanya berlaku jika berada di baris paling atas stylesheet. Di Custom CSS Elementor posisinya tidak pernah paling atasMuat font lewat Typography Elementor atau Site Settings > Custom Fonts
onclick: openFullscreen();Bukan properti CSS, tidak ada efeknyaHapus. Gunakan opsi fullscreen di pengaturan widget

Langkah Memperbaiki Script Custom CSS

  1. Buka halaman undangan, klik Edit with Elementor.
  2. Pilih widget Invitation (atau Invitation Full Screen), lalu buka tab Advanced > Custom CSS.
  3. Ganti setiap selector dengan .modalx.
  4. Tambahkan .modalx di depan selector yang belum memilikinya, misalnya .wdp-name menjadi .modalx .wdp-name.
  5. Tambahkan !important pada margin, padding, warna, atau font yang juga diatur di panel widget.
  6. Ubah komentar menjadi format /* ... */ dan hapus baris @import serta onclick.
  7. Klik Update, bersihkan cache plugin atau CDN, lalu cek halaman undangan dari tampilan depan (bukan editor).

Contoh: script v3 sebelum diperbaiki

CSS
/*custom posisi teks nama mempelai -boleh dihapus */
.wdp-mempelai{
    margin-bottom: 30px;
}

/custom posisi teks mempelai -boleh dihapus/
.wdp-name{
    padding: 0 5px 0 5px;}

.wdp-text{
    padding-right: 10px;
    padding-left: 10px;
}

/penambahan text di atas foto mempelai/
selector .elementor-image::before {
    content: "Undangan Pernikahan";
    ...
}

@import url('https://fonts.googleapis.com/css2?family=Baumans&display=swap');

.wdp-button-wrapper::after{
    content: "*Mohon maaf apabila ada kesalahan penulisan nama/gelar";
    ...
}

.wdp-button-wrapper {
    onclick:openFullscreen();
}

Contoh: script yang sudah disesuaikan untuk v4

CSS
/* custom posisi teks nama mempelai - boleh dihapus */
.modalx .wdp-mempelai {
    margin-bottom: 30px !important;
}

/* custom posisi teks nama tamu & teks pengantar - boleh dihapus */
.modalx .wdp-name {
    padding: 0 5px !important;
}

.modalx .wdp-text {
    padding-right: 10px !important;
    padding-left: 10px !important;
}

/* teks di atas foto mempelai */
.modalx .elementor-image::before {
    content: "Undangan Pernikahan";
    color: #3E3E3E;
    white-space: pre;
    display: block;
    font-size: 18px;
    font-family: 'Crimson Pro', serif;
    font-weight: normal;
    margin: 0 0 15px 0;
}

/* teks di bawah tombol buka undangan */
.modalx .wdp-button-wrapper::after {
    content: "*Mohon maaf apabila ada kesalahan penulisan nama/gelar";
    display: block;
    font-family: 'Crimson Pro', serif;
    font-size: 12px;
    margin: 5px 0 0 0;
    color: #3E3E3E;
}
Font Crimson Pro hanya tampil jika font tersebut sudah dimuat di halaman, misalnya karena dipakai di pengaturan Typography widget lain atau didaftarkan lewat Custom Fonts. Jika belum, browser memakai font serif cadangan.

Perubahan Struktur Widget Invitation dari v3 ke v4

Tabel berikut membandingkan HTML widget Invitation di WeddingPress v3 dan WDP v4. Hanya bagian tombol dan posisi cover yang berubah.

BagianWeddingPress v3WDP v4 (Pro & Lite)Status
Wadah cover.modalx, tetap di dalam widget.modalx + ID #modalx-{id widget}, dipindah ke <body> pada mode FullscreenPosisi berubah
Overlay, isi, info.overlayy, .content-modalx, .info_modalxSamaTetap
Foto mempelai.elementor-image.imgSamaTetap
Teks "The Wedding Of".wdp-txt-the-weddingSamaTetap
Nama mempelai.wdp-mempelaiSamaTetap
Tanggal.wdp-tglSamaTetap
Teks "Kepada Yth".wdp-dearSamaTetap
Nama tamu.wdp-name.namatamuSamaTetap
Teks pengantar.wdp-textSamaTetap
Tombol buka undangan.wdp-button-wrapper › button.elementor-buttonSamaTetap
Ikon di tombolspan.elementor-button-icon<span> tanpa classBerubah
Teks di tombolDibungkus <span>Langsung di dalam <button>Berubah
Keterangan.wdp-keteranganSamaTetap
Tombol QR.wdp-button-qr › button.elementor-button-qrSamaTetap

Jika script lama Anda memakai .elementor-button-icon atau .elementor-button span untuk menata teks tombol, sesuaikan dengan contoh di bagian berikutnya.


Daftar Class CSS Widget Invitation di WDP v4

Gunakan tabel ini sebagai acuan bila ingin menata bagian lain dari cover undangan. Awali setiap selector dengan .modalx agar tetap berlaku setelah cover dipindah ke <body>.

SelectorElemenCatatan
.modalxWadah cover undanganClass yang dipakai sebagai awalan semua selector
.modalx .overlayyLapisan warna di atas backgroundMengatur gelap-terangnya background
.modalx .content-modalxKotak isi cover
.modalx .info_modalxPembungkus seluruh teks dan tombol
.modalx .wdp-bg-video-containerWadah video backgroundHanya muncul bila background memakai video self-hosted (baru di v4)
.modalx .elementor-imagePembungkus foto mempelaiCocok untuk ::before atau ::after
.modalx .elementor-image imgGambar foto mempelai
.modalx .wdp-txt-the-weddingTeks "The Wedding Of"
.modalx .wdp-mempelaiNama mempelai
.modalx .wdp-tglTanggal acara
.modalx .wdp-dearTeks "Kepada Yth"
.modalx .wdp-nameNama tamu dari link ?to=Juga memiliki class namatamu
.modalx .wdp-textTeks pengantar
.modalx .wdp-button-wrapperPembungkus tombol buka undanganCocok untuk ::after (teks catatan)
.modalx .wdp-button-wrapper .elementor-buttonTombol buka undangan
.modalx .wdp-button-wrapper .elementor-button spanIkon tombolDi v4 satu-satunya span di dalam tombol adalah ikon
.modalx .wdp-keteranganTeks keterangan di bawah tombol
.modalx .wdp-button-qr .elementor-button-qrTombol QRTampil-tidaknya diatur dari panel. Jangan timpa display
.wdp-inv-container-modePenanda Mode Tampilan "Menyesuaikan Container"Menempel di .modalx (baru di v4)
body.wdp-cover-activePenanda halaman selama cover belum dibukaHilang setelah tombol diklik. Hanya di tampilan depan (baru di v4)

Contoh custom CSS lain yang sering dibutuhkan

Mengganti huruf dan warna nama tamu:

CSS
.modalx .wdp-name {
    font-family: 'Crimson Pro', serif !important;
    color: #8B6B3D !important;
    letter-spacing: 1px;
}

Menggelapkan overlay agar teks lebih terbaca di foto background yang terang:

CSS
.modalx .overlayy {
    background-color: rgba(0, 0, 0, 0.45) !important;
}

Membuat tombol buka undangan berbentuk kapsul dengan garis tepi:

CSS
.modalx .wdp-button-wrapper .elementor-button {
    border-radius: 50px !important;
    border: 1px solid #FFFFFF !important;
    padding: 12px 32px !important;
}

Menyembunyikan ikon di tombol buka undangan:

CSS
.modalx .wdp-button-wrapper .elementor-button span {
    display: none;
}

Selector ini hanya aman di v4. Di v3 teks tombol juga dibungkus span, sehingga ikut tersembunyi.

Memberi jarak ikon dengan teks tombol:

CSS
.modalx .wdp-button-wrapper .elementor-button span {
    margin-right: 8px;
}

Membuat foto mempelai berbentuk lingkaran:

CSS
.modalx .elementor-image img {
    border-radius: 50%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
}

Menyembunyikan elemen lain selama cover belum dibuka, misalnya tombol musik melayang. Tambahkan class tombol-musik lebih dulu di Advanced > CSS Classes pada elemen tersebut:

CSS
body.wdp-cover-active .tombol-musik {
    visibility: hidden;
}

Studi Kasus Nyata: Undangan Pernikahan Andy & Zhea

  • Kebutuhan: Undangan Andy & Zhea dibuat saat masih memakai WeddingPress v3. Cover-nya memiliki teks "Undangan Pernikahan" di atas foto dan catatan permohonan maaf di bawah tombol, keduanya dari Custom CSS widget Invitation.
  • Masalah: Setelah plugin diperbarui ke WDP v4, link https://websiteundangan.com/andy-zhea/?to=Andy+Hermawan menampilkan cover tanpa kedua teks tersebut, dan jarak nama mempelai kembali ke ukuran bawaan.
  • Penerapan: selector .elementor-image::before diganti .modalx .elementor-image::before, .wdp-button-wrapper::after diawali .modalx, margin nama mempelai diberi !important, dan komentar CSS dirapikan sesuai contoh di atas.
  • Hasil: Setelah cache dibersihkan, cover tampil seperti desain awal. Karena script tidak lagi memakai selector, CSS yang sama bisa dipakai ulang di undangan klien lain.

Tips & Praktik Terbaik

Utamakan panel widget: Warna, tipografi, margin, dan padding sudah tersedia di tab Style widget Invitation. Pakai Custom CSS hanya untuk hal yang tidak ada di panel, seperti teks tambahan lewat ::before/::after. Script jadi lebih pendek dan tidak perlu banyak !important.
Selalu cek di tampilan depan: Di editor Elementor cover tidak dipindah ke <body>, dan penanda body.wdp-cover-active hanya ada di tampilan depan. Buka link undangan di tab baru, atau di jendela incognito, untuk melihat hasil sebenarnya.
Gunakan satu widget Invitation per halaman: Script di panduan ini mengasumsikan satu cover per halaman. WDP v4 juga menampilkan peringatan di editor bila ada lebih dari satu widget Invitation, karena widget tambahan bisa membuat halaman tidak bisa di-scroll.

Pertanyaan yang Sering Diajukan (FAQ)

Apakah nama class CSS widget Invitation berubah di WDP v4? +
Hampir tidak. Class seperti .wdp-mempelai, .wdp-name, .wdp-text, .wdp-button-wrapper, dan .elementor-image masih sama. Perubahan hanya ada di tombol: span ikon tidak lagi memiliki class elementor-button-icon, dan teks tombol tidak lagi dibungkus span. Penyebab utama script lama gagal adalah posisi cover yang dipindah ke body, bukan nama class.
Kenapa kata selector di Custom CSS Elementor tidak berfungsi untuk widget Invitation v4? +
Elementor mengganti kata selector dengan class wrapper widget. Pada mode Fullscreen, WDP v4 memindahkan cover undangan keluar dari wrapper tersebut ke body agar tampil penuh layar di semua tema. Akibatnya aturan selector tidak menemukan elemen apa pun. Ganti selector dengan .modalx.
Apakah perlu menambahkan !important di custom CSS widget Invitation v4? +
Hanya untuk properti yang juga Anda isi di panel widget, misalnya margin, padding, warna, atau tipografi. WDP v4 menulis pengaturan panel dengan selector berbasis ID (#modalx-...) yang lebih kuat dari selector class biasa. Properti yang tidak diatur di panel, seperti content pada ::before, tidak memerlukan !important.
Di mana sebaiknya custom CSS widget Invitation ditempel? +
Tetap bisa di tab Advanced > Custom CSS pada widget Invitation. Karena script v4 memakai .modalx dan tidak bergantung pada kata selector, CSS yang sama juga bisa ditempel di Appearance > Customize > Additional CSS bila ingin berlaku untuk seluruh undangan di website.
Apakah script custom CSS ini berlaku untuk WDP Pro dan WDP Lite? +
Ya. Widget Invitation dan Invitation Full Screen di WDP Pro maupun WDP Lite memakai struktur HTML yang sama, sehingga daftar class dan contoh CSS di panduan ini berlaku untuk keduanya.