# Cara Hapus Malware WordPress  | Cara Cepat

> Cara hapus malware WordPress bergaransi, bebas redirect & Red Screen. Kirimkan permasalahan Anda, akan dijawab dalam 24 jam.

- URL: https://medikabyte.com/cara-hapus-malware-wordpress/
- Diperbarui: 2026-10-16
- Penulis: Adtyaa
- Penerbit: ADTYAA (B2B digital agency)

Skip to content

[**ADTYAA** Technology & Digital Systems](https://medikabyte.com/)

**EN**

**ID**

**中文**

Consultation

[Capabilities](https://medikabyte.com/#capabilities)
[Expertise](https://medikabyte.com/#expertise)
[Approach](https://medikabyte.com/#approach)
[Proof](https://medikabyte.com/#proof)
[About](https://medikabyte.com/#about)
[Essentials](https://medikabyte.com/essentials/)
Consultation

# Cara Hapus Malware WordPress Bergaransi *Tuntas – Bebas Virus & Redirect*

Oleh Adtyaa Diperbarui 10 Oktober 2026 Baca 9 menit

Layar merah bertuliskan peringatan dari Google Chrome, website yang tiba-tiba membuka situs judi online, atau trafik organik yang anjlok tanpa sebab jelas: jika Anda sedang mengalaminya, wajar bila panik. Reputasi yang dibangun bertahun-tahun terasa terancam dalam hitungan jam. Kabar baiknya, kondisi ini bisa ditangani. Dengan pencadangan lengkap sebelum pengerjaan, file penting dan database Anda tetap diamankan selama proses pembersihan. Panduan cara hapus malware WordPress ini menjelaskan gejala, penyebab, langkah manual lewat cPanel, hingga cara menutup celah agar infeksi tidak kembali.

### Website Anda sedang bermasalah sekarang?

Jangan tunggu peringatan Google makin parah. Ceritakan gejalanya lewat WhatsApp, lalu saya memeriksa dan memberi langkah awal.

[Kirimkan permasalahan Anda, akan dijawab dalam 24 jam](https://wa.me/6281411188809)

**Ringkasnya**

Cara hapus malware WordPress yang tuntas bukan sekadar menjalankan plugin scanner. Prosesnya: backup, audit file dan database, pembersihan beserta backdoor, penutupan celah keamanan, lalu permintaan review ke Google Search Console.

![Cara hapus malware WordPress bergaransi: website WordPress terkena virus dan redirect ke situs lain](https://medikabyte.com/wp-content/uploads/2026/10/cara-hapus-malware-wordpress.jpg)

Malware WordPress sering terlihat sebagai gejala kecil lebih dulu: redirect, file asing, atau peringatan Google.

## Ciri-Ciri Website WordPress Terkena Virus & Malware

Sebelum menjalankan cara hapus malware WordPress apa pun, pastikan dulu bahwa website Anda memang terinfeksi. Berikut ciri ciri website WordPress terkena virus yang paling sering muncul:

- **Redirect otomatis:** pengunjung dilempar ke situs lain, misalnya situs judi online atau iklan, terutama saat membuka dari hasil pencarian Google.
- **File asing di cPanel:** muncul file atau folder yang tidak pernah Anda unggah, dengan tanggal modifikasi yang janggal di File Manager.
- **Penggunaan CPU/RAM melonjak:** hosting terasa lambat atau penggunaan sumber daya mendekati 100% tanpa lonjakan pengunjung yang wajar.
- **Peringatan di Google Search Console:** laporan Security Issues menandai situs Anda, atau Chrome menampilkan layar merah peringatan.
- **Kata kunci asing di hasil pencarian:** judul dan deskripsi situs Anda tampil dengan teks yang tidak pernah Anda tulis. Praktik ini dikenal sebagai SEO poisoning.
- **Akun admin tak dikenal:** ada pengguna baru dengan peran Administrator yang bukan Anda atau tim Anda yang membuat.

Satu gejala saja belum tentu berarti infeksi, tetapi dua atau lebih sudah cukup alasan untuk segera melakukan audit. Semakin cepat Anda mengenali tanda-tandanya, semakin kecil kerusakan yang harus diperbaiki dan semakin mudah menerapkan cara hapus malware WordPress yang tepat sasaran. Catat gejala yang Anda lihat, termasuk kapan pertama kali muncul, karena informasi itu mempercepat penelusuran sumber infeksi.

## Penyebab WordPress Sering Kena Malware & Celah Keamanan Populer

Memahami penyebab WordPress sering kena malware penting karena membersihkan tanpa menutup celah hanya membuat infeksi berulang. Penyebab yang paling umum:

- **Plugin atau tema bajakan (nulled):** kode yang dimodifikasi sering disisipi backdoor sejak awal.
- **Plugin, tema, dan core terlambat diperbarui:** celah yang sudah diketahui publik tetap terbuka bagi penyerang.
- **Kredensial admin lemah:** kata sandi sederhana atau dipakai ulang di banyak layanan mudah ditebak.
- **Izin file dan folder (file permissions) tidak aman:** izin terlalu longgar memudahkan skrip berbahaya menulis ke server.
- **Akun cPanel, FTP, atau hosting yang bocor:** penyerang masuk lewat jalur di luar WordPress.

Karena itu cara hapus malware WordPress yang benar selalu diikuti dengan penelusuran pintu masuknya. Tanpa langkah itu, situs yang baru dibersihkan bisa kembali terinfeksi dalam waktu singkat melalui celah yang sama.

## Apakah Plugin Pembersih Malware WordPress Gratis Efektif?

Banyak pemilik website langsung mencari plugin pembersih malware WordPress gratis, dan itu langkah awal yang wajar. Plugin keamanan seperti Wordfence atau Sucuri tersedia dalam versi gratis dan berguna untuk pemindaian awal serta pemantauan. Namun ada keterbatasan yang perlu Anda sadari:

- Scanner bekerja berdasarkan pola yang dikenal, sehingga kode yang disamarkan atau dimodifikasi bisa lolos.
- Backdoor yang tersimpan di dalam database atau di skrip seperti .htaccess tidak selalu terdeteksi.
- Versi gratis umumnya memiliki fitur lebih terbatas dibanding versi berbayar, dan pembersihan otomatis tidak menjamin akar masalah tertutup.
- Jika situs sudah terlalu rusak, plugin bahkan bisa gagal berjalan.

Jadi plugin gratis cocok sebagai alat bantu deteksi, bukan satu-satunya cara hapus malware WordPress yang bisa Anda andalkan, terutama bila situs Anda sudah menampilkan redirect atau peringatan Google.

## Cara Menghilangkan Malware di WordPress cPanel Secara Manual

Jika Anda terbiasa dengan server, berikut cara menghilangkan malware di WordPress cPanel secara manual, sebagai versi sederhana dari cara hapus malware WordPress yang dipakai praktisi. Lakukan berurutan dan jangan melewati langkah pertama.

1. **Backup dulu.** Unduh seluruh file dan ekspor database lewat cPanel, termasuk bila situs sudah terinfeksi, agar ada titik kembali jika terjadi kesalahan.
2. **Aktifkan mode aman.** Ganti kata sandi cPanel, FTP, database, dan semua akun admin WordPress dari perangkat yang bersih.
3. **Timpa file inti.** Unduh WordPress versi yang sama dari situs resmi, lalu ganti folder **wp-admin** dan **wp-includes** serta file inti di root. Jangan timpa wp-content dan wp-config.php sebelum diperiksa.
4. **Periksa wp-config.php dan .htaccess.** Cari baris yang tidak Anda kenal, seperti kode panjang yang disandikan atau pengalihan ke domain lain.
5. **Periksa wp-content.** Hapus plugin dan tema yang tidak dipakai atau bajakan, instal ulang yang resmi, lalu cari file PHP di folder uploads, karena folder itu seharusnya hanya berisi media.
6. **Scan database.** Periksa tabel pengguna dan opsi situs, lalu cari skrip yang disisipkan ke konten.

Contoh isi .htaccess bawaan WordPress sebagai pembanding. Jika berbeda jauh, curigai ada tambahan berbahaya:

# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

Contoh kueri untuk memeriksa database lewat phpMyAdmin (sesuaikan awalan tabel, bukan selalu wp_):

SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl','home'); SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';

**Peringatan**

Pembersihan manual berisiko merusak situs jika salah menghapus file. Malware juga sering muncul kembali bila backdoor tersembunyi tidak ditutup. Jika Anda ragu pada salah satu langkah, berhenti dan minta bantuan sebelum menghapus apa pun.

## Cara Mengatasi Website Redirect ke Web Lain akibat Infeksi Hack

Banyak yang mencari cara mengatasi website redirect ke web lain karena gejalanya paling mengganggu. Setiap jenis redirect membutuhkan cara hapus malware WordPress yang sedikit berbeda, tergantung di mana kode berbahaya disembunyikan. Penyebab di balik redirect biasanya salah satu dari berikut:

### Malicious JavaScript redirect

Skrip berbahaya disisipkan ke file tema (misalnya header.php atau footer.php), ke file JavaScript, atau ke konten di database. Cari kode yang disandikan atau memanggil domain asing, lalu ganti file tema dengan salinan resmi dan bersihkan konten yang tercemar. Perhatikan juga bahwa redirect kadang hanya aktif untuk pengunjung dari Google atau perangkat tertentu, sehingga Anda sendiri mungkin tidak melihatnya.

### Sitemap injection dan halaman spam

Penyerang dapat menyuntikkan ribuan URL spam yang kemudian muncul di sitemap atau hasil pencarian. Setelah situs bersih, hapus halaman spam, buat ulang sitemap, ajukan ulang di Google Search Console, dan pantau hasil pencarian Anda. Panduan resmi Google tentang [situs yang diretas](https://developers.google.com/search/docs/monitor-debug/security/hacked) menjelaskan proses pemulihannya.

Periksa juga pengaturan alamat situs di database dan semua aturan pengalihan di .htaccess. Itu dua tempat yang paling sering dimodifikasi.

## Mengapa Menggunakan Cara Hapus Malware WordPress Profesional?

Bukan berarti pembersihan mandiri selalu keliru, dan tidak semua pemilik situs perlu langsung memakai cara hapus malware WordPress profesional. Untuk situs kecil dan infeksi ringan, banyak orang berhasil. Namun bila situs Anda menghasilkan trafik, penjualan, atau reputasi, ada beberapa pertimbangan yang layak dihitung sebelum memutuskan.

| Aspek | Mandiri (DIY) | Profesional |
| --- | --- | --- |
| Risiko salah hapus file | Tinggi bila belum terbiasa dengan struktur WordPress | Diminimalkan lewat backup penuh dan verifikasi tiap langkah |
| Deteksi backdoor | Bergantung pada scanner dan ketelitian manual | Audit file dan database secara mendalam |
| Garansi pembersihan | Tidak ada | Ada masa garansi sesuai kesepakatan tertulis |
| Security hardening | Sering terlewat | Bagian dari proses pengerjaan |
| Recovery Google Index | Perlu mempelajari proses review sendiri | Pengajuan review di Search Console ikut ditangani |

### Alur kerja cara hapus malware WordPress secara profesional

1. **Audit & scan mendalam.** Pemeriksaan file dan database setelah backup penuh diamankan.
2. **Pembersihan virus & isolasi backdoor.** File berbahaya dibersihkan dan pintu masuk tersembunyi ditutup.
3. **Patching celah keamanan.** Pembaruan inti, plugin, dan tema, serta pengerasan konfigurasi (hardening).
4. **Request unblacklist / review ke Google Search Console.** Diajukan setelah situs benar-benar bersih. Keputusan akhir tetap ada pada Google.
5. **Laporan pengerjaan & penyerahan masa garansi.** Anda menerima ringkasan temuan dan tindakan, beserta ketentuan garansi.

ADTYAA mencatat rating 5.0 dari 21 ulasan Google untuk DJURAGAN IKLAN ID, dan menangani pemulihan malware sebagai bagian dari layanan Security & Infrastructure. Layanan ini berada di bawah kapabilitas [Security & Infrastructure](https://medikabyte.com/#capabilities) milik ADTYAA, dan Anda bisa mengenal siapa yang mengerjakannya di halaman [tentang ADTYAA](https://medikabyte.com/#about).

## Cara Agar WordPress Tidak Terkena Malware Setelah Dibersihkan

Banyak yang berhenti di tahap bersih, padahal cara agar WordPress tidak terkena malware setelah dibersihkan sama pentingnya dengan pembersihan itu sendiri. Terapkan kebiasaan berikut:

- **Update rutin:** perbarui inti WordPress, plugin, dan tema, lalu hapus yang tidak terpakai.
- **Hanya pakai sumber resmi:** hindari plugin dan tema nulled sepenuhnya.
- **Autentikasi ketat:** kata sandi unik yang panjang, pembatasan percobaan login, dan batasi jumlah akun administrator.
- **Aktifkan 2FA (autentikasi dua faktor)** untuk semua akun admin.
- **Proteksi firewall:** gunakan firewall aplikasi web agar serangan terblokir sebelum mencapai situs.
- **Backup berkala:** simpan salinan di luar server hosting dan uji kemampuannya dipulihkan.
- **Atur izin file:** ikuti panduan [hardening WordPress](https://developer.wordpress.org/advanced-administration/security/hardening/) untuk izin file dan folder.

Pencegahan adalah bagian tak terpisahkan dari cara hapus malware WordPress yang tuntas: situs yang bersih hari ini tetap bisa terinfeksi lagi bulan depan bila perawatannya dibiarkan. Jika Anda ingin semua ini dikelola berkelanjutan, lihat paket perawatan dan add-on di [ADTYAA Essentials](https://medikabyte.com/essentials/).

## Estimasi Biaya & Paket Cara Pembersihan Malware WordPress

Biaya pembersihan bergantung pada ukuran situs, tingkat infeksi, dan jenis situs. Karena itu setiap pekerjaan dilingkup secara individual: setelah konsultasi singkat, Anda menerima proposal tertulis yang memuat lingkup pekerjaan, hasil yang dibutuhkan, dan ketentuan pembayaran yang disepakati sebelum pekerjaan dimulai.

Untuk melihat layanan, tema, plugin, dan add-on yang tersedia beserta rinciannya, kunjungi halaman [ADTYAA Essentials](https://medikabyte.com/essentials/). Bila situs Anda sedang bermasalah dan butuh penanganan prioritas, kirim pesan lebih dulu agar saya bisa memeriksa kondisinya.

[Lihat Layanan & Harga di Essentials](https://medikabyte.com/essentials/)

### Minta estimasi tanpa kewajiban

Sebutkan gejala dan alamat website Anda. Saya balas dengan langkah pertama dan perkiraan cakupan pengerjaan.

[Kirimkan permasalahan Anda, akan dijawab dalam 24 jam](https://wa.me/6281411188809) Kirim Brief Proyek

## Pertanyaan Populer tentang Cara Hapus Malware WordPress (FAQ)

**Apakah data dan file website saya aman saat pembersihan?**

Pembersihan dimulai dengan backup penuh file dan database, sehingga ada salinan yang bisa dipulihkan jika diperlukan. Dalam cara hapus malware WordPress yang saya jalankan, yang dihapus hanyalah kode dan file yang terbukti berbahaya; konten, gambar, dan data inti situs Anda dipertahankan.

**Berapa lama proses pembersihan malware dikerjakan?**

Durasinya bergantung pada ukuran situs, jumlah file yang terinfeksi, dan apakah situs sudah masuk daftar peringatan Google. Estimasi waktu saya sampaikan setelah audit awal, dan pesan Anda dijawab dalam 24 jam.

**Apa yang terjadi jika malware muncul kembali selama masa garansi?**

Saya menanganinya kembali sesuai ketentuan garansi yang disepakati tertulis sebelum pengerjaan, termasuk menelusuri celah yang menjadi penyebabnya.

**Apakah cara ini bisa memulihkan status merah (Red Screen) di Google Chrome?**

Setelah cara hapus malware WordPress selesai, peringatan merah dapat dihilangkan setelah situs benar-benar bersih dan permintaan review diajukan lewat Google Search Console. Keputusan dan waktu peninjauan ditentukan oleh Google, bukan oleh pemilik situs atau penyedia jasa.

## Selamatkan Reputasi SEO Website Anda Sebelum Makin Turun

Setiap hari tertunda memperbesar biaya pemulihan. Semakin lama malware dibiarkan, semakin besar peluang halaman spam terindeks, pengunjung kehilangan kepercayaan, dan peringkat menurun. Menunda hanya membuat pemulihan makin panjang. Jika Anda sudah mencoba cara hapus malware WordPress sendiri tetapi gejalanya kembali, itu tanda ada celah yang belum tertutup. Serahkan pada yang berpengalaman, dan fokuslah kembali pada bisnis Anda.

### Pulihkan website Anda sekarang

Ceritakan kondisinya sekarang. Saya periksa dan balas dengan temuan awal serta langkah yang disarankan.

[Kirimkan permasalahan Anda, akan dijawab dalam 24 jam](https://wa.me/6281411188809) Kirim Brief Proyek

Project brief

## Share your requirement.

Describe what you are building, what is not performing, or what needs to improve. I will review the brief and respond within 24 hours.

WhatsApp / Phone [0814 111 888 09](tel:+6281411188809)

Email [hallo@adtyaa.cloud](mailto:hallo@adtyaa.cloud)

Base **Jakarta, Indonesia**

Location

## Find us on Google Maps.

In-person meetings are by appointment. Please message first so a time can be confirmed.

### DJURAGAN IKLAN ID

Founded by ADTYAA

Jl. Green Pramuka City No.9 13, RT.13/RW.9, Rawasari, Kec. Cempaka Putih, Kota Jakarta Pusat, DKI Jakarta 10570

#### Opening hours

Mon, Wed to Sat 08:00 – 21:30

Tuesday 08:00 – 21:00

Sunday 09:00 – 21:30

[Get directions](https://www.google.com/maps/dir/?api=1&destination=-6.1883766,106.8732792&destination_place_id=ChIJKcjnOqb1aS4RfbYD_EKMv84)
[Chat on WhatsApp](https://wa.me/6281411188809)
[Call now](tel:+6281411188809)

Build what your business depends on.

## Let’s build something worth depending on.

One accountable technology partner across engineering, growth, security, and digital infrastructure.

Request a consultation [Explore capabilities](https://medikabyte.com/#capabilities)

[**ADTYAA**](https://medikabyte.com/)

Digital Systems & Technology Consultancy

Aditya

Founder & Technology Strategist

Djuragan Iklan

Navigate

- [Capabilities](https://medikabyte.com/#capabilities)
- [Expertise](https://medikabyte.com/#expertise)
- [Approach](https://medikabyte.com/#approach)
- [About](https://medikabyte.com/#about)
- Location
- Contact

Capabilities

- [Software Engineering](https://medikabyte.com/#capabilities)
- [Digital Engineering](https://medikabyte.com/#capabilities)
- [Growth Systems](https://medikabyte.com/#capabilities)
- [Security & Infrastructure](https://medikabyte.com/#capabilities)
- [Medical SEO](https://medikabyte.com/#medical)
- [Custom Plugins](https://medikabyte.com/essentials/)
- [Custom Themes](https://medikabyte.com/essentials/)
- [Add-ons & Care Plans](https://medikabyte.com/essentials/)

Contact

[WhatsApp](https://wa.me/6281411188809)
[hallo@adtyaa.cloud](mailto:hallo@adtyaa.cloud)
Jakarta, Indonesia

ADTYAA

© 2026 ADTYAA. All rights reserved.

[Essentials](https://medikabyte.com/essentials/)

[Chat on WhatsApp](https://wa.me/6281411188809)

var D = {"skip":["Skip to content","Lewati ke konten","跳到主要内容"],"menu":["Menu","Menu","菜单"],"lang.group":["Language","Bahasa","语言"],"nav.cap":["Capabilities","Keahlian","核心能力"],"nav.work":["Expertise","Spesialisasi","行业专长"],"nav.app":["Approach","Pendekatan","合作流程"],"nav.proof":["Proof","Bukti","实绩"],"nav.about":["About","Tentang","关于"],"nav.ess":["Essentials","Essentials","Essentials"],"nav.cta":["Consultation","Konsultasi","预约咨询"],"nav.contact":["Contact","Kontak","联系我们"],"bag.aria":["ADTYAA Essentials: services, themes, plugins, and add-ons","ADTYAA Essentials: jasa, tema, plugin, dan add-on","ADTYAA Essentials：服务、主题、插件与附加服务"],"hero.cta1":["Request a consultation","Jadwalkan konsultasi","预约咨询"],"hero.cta2":["Explore capabilities","Jelajahi keahlian","了解核心能力"],"hero.role":["Founder & Technology Strategist","Founder & Technology Strategist","创始人 · 技术战略顾问"],"cap4.title":["Software Engineering","Software Engineering","软件工程"],"cap1.title":["Digital Engineering","Digital Engineering","数字工程"],"cap2.title":["Growth Systems","Growth Systems","增长体系"],"cap3.title":["Security & Infrastructure","Security & Infrastructure","安全与基础设施"],"opt.med":["Medical SEO","SEO Medis","医疗 SEO"],"opt.other":["Other / Not sure yet","Lainnya / Belum yakin","其他 / 尚未确定"],"contact.label":["Project brief","Brief proyek","项目简报"],"contact.title":["Share your requirement.","Sampaikan kebutuhan Anda.","请告诉我们您的需求。"],"contact.copy":["Describe what you are building, what is not performing, or what needs to improve. I will review the brief and respond within 24 hours.","Jelaskan apa yang sedang Anda bangun, apa yang belum berjalan optimal, atau apa yang perlu ditingkatkan. Saya akan mempelajari brief dan merespons dalam 24 jam.","请描述您正在构建的内容、表现不佳之处或需要改进的方面。我会审阅简报并在 24 小时内回复，咨询以英文进行。"],"contact.wa":["WhatsApp / Phone","WhatsApp / Telepon","WhatsApp / 电话"],"contact.loc":["Base","Lokasi","所在地"],"contact.city":["Jakarta, Indonesia","Jakarta, Indonesia","印度尼西亚 · 雅加达"],"form.name":["Name *","Nama *","姓名 *"],"form.email":["Email","Email","邮箱"],"form.wa":["WhatsApp","WhatsApp","WhatsApp"],"form.url":["Website","Website","网站"],"form.service":["Capability *","Keahlian *","所需能力 *"],"form.choose":["Choose a capability","Pilih keahlian","请选择能力方向"],"form.eng":["Engagement","Jenis kerja sama","合作类型"],"form.time":["Timeline","Target waktu","时间安排"],"form.choose2":["Choose one","Pilih salah satu","请选择"],"form.msg":["Project / problem","Proyek / masalah","项目 / 问题"],"form.sendwa":["Send via WhatsApp","Kirim lewat WhatsApp","通过 WhatsApp 发送"],"form.sendmail":["Send via email","Kirim lewat email","通过邮件发送"],"form.note":["Your brief opens in WhatsApp or your email application. Nothing is stored on this page.","Brief Anda terbuka di WhatsApp atau aplikasi email, siap dikirim. Tidak ada data yang disimpan di halaman ini.","您的简报将在 WhatsApp 或邮件应用中打开，供您发送。本页面不会保存任何数据。"],"eng.1":["One-time fix or setup","Perbaikan atau setup sekali jalan","一次性修复或设置"],"eng.2":["Full project","Proyek penuh","完整项目"],"eng.3":["Ongoing monthly support","Dukungan bulanan berkelanjutan","持续月度支持"],"eng.4":["Not sure yet","Belum yakin","尚未确定"],"time.1":["As soon as possible","Secepatnya","尽快"],"time.2":["Within 1 month","Dalam 1 bulan","1 个月内"],"time.3":["Within 3 months","Dalam 3 bulan","3 个月内"],"time.4":["Flexible","Fleksibel","灵活"],"f.err":["Please enter your name and choose a capability first.","Isi nama dan pilih keahlian terlebih dahulu.","请先填写姓名并选择能力方向。"],"f.okwa":["Opening WhatsApp...","Membuka WhatsApp...","正在打开 WhatsApp…"],"f.okmail":["Opening your email application...","Membuka aplikasi email Anda...","正在打开邮件应用…"],"m.name":["Name","Nama","Name"],"m.email":["Email","Email","Email"],"m.wa":["WhatsApp","WhatsApp","WhatsApp"],"m.url":["Website","Website","Website"],"m.service":["Capability","Keahlian","Capability"],"m.eng":["Engagement","Jenis kerja sama","Engagement"],"m.time":["Timeline","Target waktu","Timeline"],"m.msg":["Message","Pesan","Message"],"m.subject":["Project enquiry","Permintaan proyek","Project enquiry"],"loc.label":["Location","Lokasi","地点"],"loc.title":["Find us on Google Maps.","Temukan kami di Google Maps.","在 Google 地图上找到我们。"],"loc.lead":["In-person meetings are by appointment. Please message first so a time can be confirmed.","Pertemuan langsung dengan janji temu. Kirim pesan terlebih dahulu agar waktunya dapat dikonfirmasi.","现场会面需提前预约。请先发送消息以确认时间。"],"loc.founded":["Founded by ADTYAA","Founded by ADTYAA","由 ADTYAA 创立"],"loc.hours":["Opening hours","Jam operasional","营业时间"],"loc.d1":["Mon, Wed to Sat","Sen, Rab sampai Sab","周一、周三至周六"],"loc.d2":["Tuesday","Selasa","周二"],"loc.d3":["Sunday","Minggu","周日"],"loc.dir":["Get directions","Petunjuk arah","获取路线"],"loc.wa":["Chat on WhatsApp","Chat via WhatsApp","通过 WhatsApp 洽谈"],"loc.call":["Call now","Telepon sekarang","立即致电"],"loc.map":["DJURAGAN IKLAN ID on Google Maps","DJURAGAN IKLAN ID di Google Maps","DJURAGAN IKLAN ID 的 Google 地图位置"],"final.label":["Build what your business depends on.","Bangun sistem yang diandalkan bisnis Anda.","构建您的业务所依赖的系统。"],"final.title":["Let's build something worth depending on.","Mari bangun sesuatu yang layak diandalkan.","让我们共同构建值得依赖的系统。"],"final.copy":["One accountable technology partner across engineering, growth, security, and digital infrastructure.","Satu partner teknologi yang akuntabel untuk engineering, growth, keamanan, dan infrastruktur digital.","一个对结果负责的技术合作方，覆盖工程、增长、安全与数字基础设施。"],"foot.nav":["Navigate","Navigasi","导航"],"foot.cap":["Capabilities","Keahlian","核心能力"],"foot.con":["Contact","Kontak","联系"],"foot.plugins":["Custom Plugins","Plugin Kustom","定制插件"],"foot.themes":["Custom Themes","Tema Kustom","定制主题"],"foot.addons":["Add-ons & Care Plans","Add-on & Paket Perawatan","附加服务与维护计划"],"foot.rights":["All rights reserved.","Hak cipta dilindungi.","保留所有权利。"],"dock.group":["Quick contact","Kontak cepat","快速联系"],"dock.wa":["Chat on WhatsApp","Chat via WhatsApp","通过 WhatsApp 洽谈"],"dock.maps":["Open in Google Maps","Buka di Google Maps","在 Google 地图中打开"],"dock.call":["Call now","Telepon sekarang","立即致电"],"wa.general":["Hi Adtyaa, my WordPress website has malware and I need help removing it. Here is my issue:","Hi Adtyaa, my WordPress website has malware and I need help removing it. Here is my issue:","Hi Adtyaa, my WordPress website has malware and I need help removing it. Here is my issue:"],"wa.article":["Hi Adtyaa, my WordPress website has malware and I need help removing it. Here is my issue:","Hi Adtyaa, my WordPress website has malware and I need help removing it. Here is my issue:","Hi Adtyaa, my WordPress website has malware and I need help removing it. Here is my issue:"],"a.home":["Home","Beranda","首页"],"a.m1":["By Adtyaa","Oleh Adtyaa","作者：Adtyaa"],"a.m2":["10 October 2026","10 Oktober 2026","2026 年 10 月 10 日"],"a.m3":["9 min read","Baca 9 menit","阅读约 9 分钟"],"a.toc":["In this article","Dalam artikel ini","本文内容"],"cta.b1":["Talk to ADTYAA on WhatsApp","Hubungi ADTYAA lewat WhatsApp","通过 WhatsApp 联系 ADTYAA"],"cta.b2":["Send a project brief","Kirim brief proyek","提交项目简报"],"au.name":["Adtyaa, Founder of [DJURAGAN IKLAN ID<\/a>","Adtyaa, Founder of](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5) [DJURAGAN IKLAN ID<\/a>","Adtyaa，](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5) [DJURAGAN IKLAN ID<\/a> 创始人"],"au.bio":["Builds professional websites, SEO and digital advertising systems for B2B brands and startups.","Membangun website profesional, SEO, dan sistem iklan digital untuk brand B2B dan startup.","为 B2B 品牌与初创企业构建专业网站、SEO 与数字广告体系。"],"au.cta":["Talk to ADTYAA on WhatsApp","Hubungi ADTYAA lewat WhatsApp","通过 WhatsApp 联系 ADTYAA"],"au.alt":["Adtyaa, author of the B2B marketing agency Indonesia guide","Adtyaa, penulis panduan B2B marketing agency Indonesia","Adtyaa，B2B marketing agency Indonesia 指南作者"]}; var LI = { en: 0, id: 1, zh: 2 }; var L = "id"; var PHONE = "6281411188809", MAIL = "hallo@adtyaa.cloud";](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5)

function $(sel, ctx) { return Array.prototype.slice.call((ctx || root).querySelectorAll(sel)); } function byId(id) { return document.getElementById(id); } function t(key, lang) { var e = D[key]; if (!e) { return key; } var v = e[LI[lang || L]]; return (v === undefined || v === "") ? e[0] : v; } function msgLang() { return "id"; } function waUrl(m) { return "https://wa.me/" + PHONE + "?text=" + encodeURIComponent(m); }

var scLoaded = false; function loadSC() { if (scLoaded) { return; } scLoaded = true; var l = document.createElement("link"); l.rel = "stylesheet"; l.href = "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap"; document.head.appendChild(l); } function apply() { if (L === "zh") { loadSC(); } document.documentElement.setAttribute("lang", L === "zh" ? "zh-Hans" : L); root.setAttribute("data-l", L); $("[data-i18n]").forEach(function (el) { el.textContent = t(el.getAttribute("data-i18n")); }); $("[data-i18n-html]").forEach(function (el) { el.innerHTML = t(el.getAttribute("data-i18n-html")); }); $("[data-i18n-alt]").forEach(function (el) { el.setAttribute("alt", t(el.getAttribute("data-i18n-alt"))); }); $("[data-i18n-title]").forEach(function (el) { el.setAttribute("title", t(el.getAttribute("data-i18n-title"))); }); $("[data-i18n-aria]").forEach(function (el) { el.setAttribute("aria-label", t(el.getAttribute("data-i18n-aria"))); }); $("[data-wa]").forEach(function (el) { el.setAttribute("href", waUrl(t(el.getAttribute("data-wa"), msgLang()))); }); $("[data-lang]").forEach(function (b) { b.setAttribute("aria-pressed", b.getAttribute("data-lang") === L ? "true" : "false"); }); var st = byId("fs"); if (st) { st.textContent = ""; st.classList.remove("err"); } }

root.addEventListener("click", function (e) { var b = e.target.closest ? e.target.closest("[data-lang]") : null; if (!b) { return; } L = b.getAttribute("data-lang"); apply(); });

(function initLang() { var pick = null; try { var q = new URLSearchParams(window.location.search || "").get("lang"); if (q && LI[q] !== undefined) { pick = q; } } catch (x) {} if (pick) { L = pick; } })();

var hd = byId("hd"), bg = byId("bg"), mn = byId("mn"); var bar = root.querySelector(".prog span"); var ticking = false; function onScroll() { ticking = false; if (hd) { hd.classList.toggle("sc", window.scrollY > 8); } if (bar) { var h = document.documentElement.scrollHeight - window.innerHeight; var p = h > 0 ? Math.min(1, Math.max(0, window.scrollY / h)) : 0; bar.style.transform = "scaleX(" + p.toFixed(4) + ")"; } } window.addEventListener("scroll", function () { if (!ticking) { ticking = true; window.requestAnimationFrame(onScroll); } }, { passive: true }); onScroll();

function closeMenu() { if (mn) { mn.classList.remove("on"); } if (bg) { bg.setAttribute("aria-expanded", "false"); } } if (bg && mn) { bg.addEventListener("click", function () { var on = mn.classList.toggle("on"); bg.setAttribute("aria-expanded", on ? "true" : "false"); }); mn.addEventListener("click", function (e) { if (e.target.closest && e.target.closest("a")) { closeMenu(); } }); } document.addEventListener("keydown", function (e) { if (e.key === "Escape") { closeMenu(); } }); window.addEventListener("resize", function () { if (window.innerWidth > 1000) { closeMenu(); } });

var form = byId("cf"); if (form) { var fs = byId("fs"); var val = function (id) { var el = byId(id); return el ? el.value.trim() : ""; }; var optText = function (id) { var el = byId(id); if (!el || !el.value) { return ""; } var key = el.options[el.selectedIndex].getAttribute("data-i18n"); return key ? t(key, msgLang()) : el.options[el.selectedIndex].text; }; var setStatus = function (key, err) { fs.textContent = key ? t(key) : ""; fs.classList.toggle("err", !!err); }; var validate = function () { var ok = true; ["f-name", "f-service"].forEach(function (id) { var el = byId(id), bad = !el.value.trim(); el.setAttribute("aria-invalid", bad ? "true" : "false"); if (bad) { ok = false; } }); return ok; }; var compose = function () { var ml = msgLang(), lines = [t("wa.general", ml), ""]; var add = function (k, v) { if (v) { lines.push(t(k, ml) + ": " + v); } }; add("m.name", val("f-name")); add("m.email", val("f-email")); add("m.wa", val("f-wa")); add("m.url", val("f-url")); add("m.service", optText("f-service")); add("m.eng", optText("f-eng")); add("m.time", optText("f-time")); var m = val("f-msg"); if (m) { lines.push(""); lines.push(t("m.msg", ml) + ":"); lines.push(m); } return lines.join("\n"); }; byId("send-wa").addEventListener("click", function () { if (!validate()) { setStatus("f.err", true); return; } setStatus("f.okwa", false); window.open(waUrl(compose()), "_blank", "noopener"); }); byId("send-mail").addEventListener("click", function () { if (!validate()) { setStatus("f.err", true); return; } setStatus("f.okmail", false); var subject = t("m.subject", msgLang()) + " - " + val("f-name"); window.location.href = "mailto:" + MAIL + "?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(compose()); }); form.addEventListener("submit", function (e) { e.preventDefault(); byId("send-wa").click(); }); ["f-name", "f-service"].forEach(function (id) { var el = byId(id); var clear = function () { if (el.value.trim()) { el.setAttribute("aria-invalid", "false"); } }; el.addEventListener("input", clear); el.addEventListener("change", clear); }); }

apply();

var reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;

function initFx(host) { if (!host) { return; } var cv = document.createElement("canvas"); cv.className = "fx"; cv.setAttribute("aria-hidden", "true"); host.insertBefore(cv, host.firstChild); var ctx = cv.getContext("2d"); if (!ctx) { return; } var W = 1, H = 1, stars = [], dust = [], nodes = [], mx = -9999, my = -9999, onScreen = true; var sprite = document.createElement("canvas"); sprite.width = sprite.height = 48; var sg = sprite.getContext("2d"), grad = sg.createRadialGradient(24, 24, 0, 24, 24, 24); grad.addColorStop(0, "rgba(255,243,209,1)"); grad.addColorStop(.25, "rgba(230,200,140,.55)"); grad.addColorStop(1, "rgba(201,164,92,0)"); sg.fillStyle = grad; sg.fillRect(0, 0, 48, 48); function rnd(a, b) { return a + Math.random() * (b - a); } function seed() { var a = W * H, i; stars = []; dust = []; nodes = []; for (i = 0; i < Math.round(a / 9000); i++) { stars.push({ x: rnd(0, W), y: rnd(0, H), r: rnd(.3, 1.05), p: rnd(0, 6.28), s: rnd(.5, 1.6) }); } for (i = 0; i < Math.round(Math.min(46, 16 + a / 42000)); i++) { dust.push({ x: rnd(0, W), y: rnd(0, H), r: rnd(1.4, 3.6), vy: rnd(.1, .38), vx: rnd(-.07, .07), a: rnd(.25, .65), p: rnd(0, 6.28) }); } for (i = 0; i < Math.round(Math.min(64, Math.max(20, a / 24000))); i++) { nodes.push({ x: rnd(0, W), y: rnd(0, H), vx: rnd(-.12, .12), vy: rnd(-.1, .1) }); } } function size() { var r = host.getBoundingClientRect(), dpr = Math.min(window.devicePixelRatio || 1, 2); W = Math.max(1, r.width); H = Math.max(1, r.height); cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr); ctx.setTransform(dpr, 0, 0, dpr, 0, 0); seed(); draw(0, true); } function draw(t, still) { var i, j, n, m, dx, dy, d, al; ctx.clearRect(0, 0, W, H); for (i = 0; i < stars.length; i++) { n = stars[i]; al = .2 + .6 * (.5 + .5 * Math.sin(t * .001 * n.s + n.p)); ctx.fillStyle = "rgba(243,232,205," + (al * .75).toFixed(3) + ")"; ctx.beginPath(); ctx.arc(n.x, n.y, n.r, 0, 6.2832); ctx.fill(); } for (i = 0; i < nodes.length; i++) { n = nodes[i]; if (!still) { n.x += n.vx; n.y += n.vy; if (n.x < -10) { n.x = W + 10; } else if (n.x > W + 10) { n.x = -10; } if (n.y < -10) { n.y = H + 10; } else if (n.y > H + 10) { n.y = -10; } } for (j = i + 1; j < nodes.length; j++) { m = nodes[j]; dx = n.x - m.x; dy = n.y - m.y; if (dx > 150 || dx < -150 || dy > 150 || dy < -150) { continue; } d = Math.sqrt(dx * dx + dy * dy); if (d < 150) { ctx.strokeStyle = "rgba(217,188,130," + ((1 - d / 150) * .2).toFixed(3) + ")"; ctx.lineWidth = .7; ctx.beginPath(); ctx.moveTo(n.x, n.y); ctx.lineTo(m.x, m.y); ctx.stroke(); } } dx = n.x - mx; dy = n.y - my; d = Math.sqrt(dx * dx + dy * dy); if (d < 190) { ctx.strokeStyle = "rgba(246,231,189," + ((1 - d / 190) * .5).toFixed(3) + ")"; ctx.lineWidth = .9; ctx.beginPath(); ctx.moveTo(n.x, n.y); ctx.lineTo(mx, my); ctx.stroke(); } ctx.fillStyle = "rgba(230,205,150,.7)"; ctx.beginPath(); ctx.arc(n.x, n.y, 1.25, 0, 6.2832); ctx.fill(); } for (i = 0; i < dust.length; i++) { n = dust[i]; if (!still) { n.y -= n.vy; n.x += n.vx + Math.sin(t * .0006 + n.p) * .12; if (n.y < -12) { n.y = H + 12; n.x = rnd(0, W); } } ctx.globalAlpha = n.a * (.65 + .35 * Math.sin(t * .0012 + n.p)); ctx.drawImage(sprite, n.x - n.r * 3, n.y - n.r * 3, n.r * 6, n.r * 6); } ctx.globalAlpha = 1; } function loop(ts) { if (onScreen && !document.hidden) { draw(ts, false); } window.requestAnimationFrame(loop); } size(); if ("ResizeObserver" in window) { new ResizeObserver(function () { size(); }).observe(host); } else { window.addEventListener("resize", size); } if (reduce) { return; } if ("IntersectionObserver" in window) { new IntersectionObserver(function (es) { es.forEach(function (en) { onScreen = en.isIntersecting; }); }, { rootMargin: "100px" }).observe(host); } host.addEventListener("pointermove", function (e) { var r = host.getBoundingClientRect(); mx = e.clientX - r.left; my = e.clientY - r.top; }); host.addEventListener("pointerleave", function () { mx = -9999; my = -9999; }); window.requestAnimationFrame(loop); } initFx(root.querySelector(".ah")); initFx(root.querySelector(".final")); if (reduce || !("IntersectionObserver" in window)) { return; } if (!document.body.classList.contains("elementor-editor-active")) { root.classList.add("js"); var rv = new IntersectionObserver(function (es) { es.forEach(function (en) { if (!en.isIntersecting) { return; } en.target.classList.add("in"); rv.unobserve(en.target); }); }, { threshold: 0, rootMargin: "0px 0px -6% 0px" }); $(".rv").forEach(function (el) { rv.observe(el); }); } })();

tetap bisa diseleksi/disalin. */ (function(){ 'use strict'; if(window.__cgOn)return;window.__cgOn=1; if(document.body&&document.body.classList.contains('elementor-editor-active'))return;

var doc=document,root=doc.documentElement; var EDITABLE="input,textarea,select,[contenteditable='true']"; var COPYABLE='.cm,address'; var WM_MS=5000; /* lama watermark tampil setelah screenshot terdeteksi */ var wm=null,wmTimer=0;

root.classList.add('cg-on');

function inEditable(el){return !!(el&&el.closest&&el.closest(EDITABLE))} function block(e){e.preventDefault()}

/* ---------- Watermark screenshot ---------- */ function showWatermark(){ if(!wm){ if(!doc.body)return; wm=doc.createElement('div'); wm.className='cg-wm'; wm.setAttribute('aria-hidden','true'); doc.body.appendChild(wm); } root.classList.add('cg-shot'); clearTimeout(wmTimer); wmTimer=setTimeout(function(){root.classList.remove('cg-shot')},WM_MS); }

/* ---------- Print ---------- */ function printOn(){root.classList.add('cg-print')} function printOff(){root.classList.remove('cg-print')} window.addEventListener('beforeprint',printOn); window.addEventListener('afterprint',printOff); if(window.matchMedia){ var mq=window.matchMedia('print'); var onMq=function(e){e.matches?printOn():printOff()}; if(mq.addEventListener)mq.addEventListener('change',onMq); else if(mq.addListener)mq.addListener(onMq); }

/* ---------- Mouse / seleksi ---------- */ doc.addEventListener('contextmenu',function(e){ if(!inEditable(e.target))block(e); });

doc.addEventListener('dragstart',block);

doc.addEventListener('selectstart',function(e){ var t=e.target&&e.target.nodeType===1?e.target:(e.target&&e.target.parentElement); if(inEditable(t)||(t&&t.closest&&t.closest(COPYABLE)))return; block(e); });

/* ---------- Keyboard ---------- */ doc.addEventListener('keydown',function(e){ var k=e.code,mod=e.ctrlKey||e.metaKey,stop=false;

/* Screenshot: PrintScreen, Cmd+Shift+3/4/5/6 (Mac), Win+Shift+S */ if(k==='PrintScreen'||e.key==='PrintScreen'|| (e.metaKey&&e.shiftKey&&(k==='Digit3'||k==='Digit4'||k==='Digit5'||k==='Digit6'||k==='KeyS'))){ showWatermark(); }

if(k==='F12'){ stop=true; }else if(mod&&!e.altKey&&(k==='KeyP'||(!e.shiftKey&&(k==='KeyS'||k==='KeyU')))){ stop=true; /* Ctrl/Cmd + P (print), S, U */ }else if( (mod&&e.shiftKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'))|| /* Ctrl/Cmd + Shift + I, J, C */ (e.metaKey&&e.altKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'||k==='KeyU')) /* Cmd + Option + I, J, C, U (Mac) */ ){ stop=true; } if(stop){block(e);e.stopPropagation()} },true);

/* Di Windows, PrintScreen sering hanya mengirim keyup */ doc.addEventListener('keyup',function(e){ if(e.code==='PrintScreen'||e.key==='PrintScreen')showWatermark(); },true);

/* Desktop saja: bila panel dev tools terbuka (docked), bersihkan console saat jendela di-resize */ if(window.matchMedia&&window.matchMedia('(hover:hover) and (pointer:fine)').matches){ var raf=0; window.addEventListener('resize',function(){ if(raf)return; raf=requestAnimationFrame(function(){ raf=0; if((window.outerWidth-window.innerWidth>200||window.outerHeight-window.innerHeight>260)&&window.console&&console.clear){console.clear()} }); },{passive:true}); } }());
