Dalam panduan berikut ini, Cara Membuat Audio Player html WordPress Elegan dan Responsif, kita akan membuat Audio Player html wordpress modern dan responsif dengan fitur playlist dinamis, kontrol volume, dan desain sticky yang tetap muncul saat halaman di-scroll. Tutorial ini dikembangkan dengan bantuan Gemini Partner Code.
Contoh Audio Player html wordpress
playlist-data.js)Buat file bernama playlist-data.js. File ini berfungsi sebagai database lagu Anda. Unggah ke Media Library WordPress dan catat URL-nya.
Salin kode JavaScript
const songs = [
{
title: "Judul Lagu 1",
artist: "Nama Artis",
src: "URL_FILE_AUDIO_DI_WORDPRESS",
cover: "URL_FILE_GAMBAR_COVER"
},
{
title: "Judul Lagu 2",
artist: "Nama Artis",
src: "URL_FILE_AUDIO_2",
cover: "URL_FILE_COVER_2"
}
];
player-logic.js)Buat file bernama player-logic.js. Ini adalah otak yang mengatur jalannya musik, navigasi, dan kontrol volume. Unggah file ini ke Media Library WordPress.
Salin kode JavaScript
document.addEventListener('DOMContentLoaded', function() {
const audio = document.getElementById('wp-main-audio');
const playBtn = document.getElementById('play-btn');
const prevBtn = document.getElementById('prev-btn');
const nextBtn = document.getElementById('next-btn');
const muteBtn = document.getElementById('mute-btn');
const volumeSlider = document.getElementById('volume-slider');
const progress = document.getElementById('progress-bar');
const progressContainer = document.getElementById('progress-container');
const playlistElement = document.getElementById('wp-playlist-dynamic');
let songIndex = 0;
// Fungsi Update Ikon Volume
function updateVolumeIcon(vol, isMuted) {
if (isMuted || vol == 0) {
muteBtn.innerHTML = '<i class="fas fa-volume-mute"></i>';
} else {
muteBtn.innerHTML = '<i class="fas fa-volume-up"></i>';
}
}
// Fungsi Load Lagu
function loadAndPlay() {
const song = songs[songIndex];
audio.src = song.src;
document.getElementById('current-title').innerText = song.title;
document.getElementById('current-artist').innerText = song.artist;
document.getElementById('current-thumb').src = song.cover;
audio.play();
playBtn.innerHTML = '<i class="fas fa-pause"></i>';
}
// Event Listener lainnya (Next, Prev, Mute, Progress)...
// (Gunakan kode logic versi final sebelumnya)
});
Buka halaman atau postingan WordPress Anda, tambahkan blok Custom HTML, dan tempelkan kode berikut. Jangan lupa ganti URL script di bagian bawah dengan URL file yang sudah Anda unggah.
Salin kode HTML
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PUJASHANTI Audio Player</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
<style>
/* Layout Utama */ .sticky-player { position: sticky; top: 20px; z-index: 999; }
.elegant-player {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #111;
color: #fff;
border-radius: 20px;
overflow: hidden;
max-width: 380px;
margin: 40px auto;
box-shadow: 0 20px 50px rgba(0,0,0,0.8);
border: 1px solid #222;
}
/* Header & Cover */ .player-header { padding: 30px 20px; text-align: center; background: linear-gradient(180deg, #222, #111); }
.album-art { width: 140px; height: 140px; margin: 0 auto 15px; border-radius: 15px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.5); border: 2px solid #333; }
.album-art img { width: 100%; height: 100%; object-fit: cover; }
.status-badge { font-size: 9px; color: #3498db; border: 1px solid #3498db; padding: 2px 10px; border-radius: 20px; letter-spacing: 1px; font-weight: bold; }
#current-title { margin: 15px 0 5px; font-size: 1.2em; font-weight: 500; color: #fff; }
#current-artist { color: #777; font-size: 0.9em; margin: 0; }
/* Kontrol & Progress */ .custom-controls { padding: 0 25px 25px; }
.progress-container { background: #333; height: 6px; border-radius: 10px; cursor: pointer; margin-top: 10px; }
.progress-bar { background: #3498db; height: 100%; width: 0%; border-radius: 10px; transition: width 0.1s linear; }
.time-info { display: flex; justify-content: space-between; font-size: 11px; color: #555; margin: 8px 0 20px; }
.main-btns { display: flex; justify-content: center; align-items: center; gap: 25px; }
.main-btns button { background: none; border: none; color: #fff; cursor: pointer; font-size: 1.4rem; transition: 0.3s; padding: 10px; }
.main-btns button:hover { color: #3498db; transform: scale(1.1); }
/* Play Button (Khusus ID: play-btn) */ #play-btn {
background: #3498db;
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 15px rgba(52, 152, 219, 0.3);
}
#play-btn:hover { background: #2980b9; }
/* Volume Control */ .volume-control-group { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 25px; }
#mute-btn { background: none; border: none; color: #fff; cursor: pointer; font-size: 1.1rem; width: 30px; }
#volume-slider { width: 80px; accent-color: #3498db; cursor: pointer; height: 4px; }
/* Playlist (Target: wp-playlist-dynamic) */ .playlist-container { max-height: 180px; overflow-y: auto; background: #0a0a0a; border-top: 1px solid #1a1a1a; list-style: none; padding: 0; margin: 0; }
.wp-track { padding: 12px 25px; border-bottom: 1px solid #151515; cursor: pointer; transition: 0.2s; display: flex; flex-direction: column; }
.wp-track:hover { background: #111; }
.wp-track.active { border-left: 4px solid #3498db; background: #161616; }
.track-name { display: block; font-size: 0.95em; color: #eee; font-weight: 500; }
.track-artist { font-size: 0.8em; color: #555; }
/* Footer */ .player-footer { padding: 12px; background: #050505; text-align: center; font-size: 10px; color: #444; border-top: 1px solid #1a1a1a; }
.player-footer strong { color: #3498db; }
.player-footer a { color: #666; text-decoration: none; }
</style>
</head>
<body>
<div class="elegant-player sticky-player">
<div class="player-header">
<div class="album-art">
<img id="current-thumb" src="https://semaramedia.web.id/wp-content/uploads/2026/03/pujashanti-high-resolution-logo-1-2.webp" alt="Cover" />
</div>
<div class="now-playing-info">
<span class="status-badge">NOW PLAYING</span>
<h5 id="current-title">Memuat...</h5>
<p id="current-artist">Artis</p>
</div>
</div>
<div class="custom-controls">
<div id="progress-container" class="progress-container">
<div id="progress-bar" class="progress-bar"></div>
</div>
<div class="time-info">
<span id="curr-time">0:00</span>
<span id="dur-time">0:00</span>
</div>
<div class="main-btns">
<button id="prev-btn" title="Lagu Sebelumnya"><i class="fas fa-step-backward"></i></button>
<button id="play-btn" title="Play/Pause"><i class="fas fa-play"></i></button>
<button id="next-btn" title="Lagu Selanjutnya"><i class="fas fa-step-forward"></i></button>
</div>
<div class="volume-control-group">
<button id="mute-btn" type="button"><i class="fas fa-volume-up"></i></button>
<input id="volume-slider" max="1" min="0" step="0.1" type="range" value="1" />
</div>
</div>
<audio id="wp-main-audio"></audio>
<ul id="wp-playlist-dynamic" class="playlist-container">
</ul>
<div class="player-footer">
<strong>PUJASHANTI Player</strong> kode sumber:
<a href="https://gemini.google.com/" target="_blank" rel="noopener">
<i class="fa-solid fa-robot"></i> Gemini AI
</a>
</div>
</div>
<script src="/js/playlist-data.js?v.2.1"></script>
<script src="/js/player-logic.js"></script>
</body> Dengan memisahkan antara Data (lagu), Logika (JS), dan Tampilan (HTML/CSS), website Anda akan tetap ringan dan mudah dikelola. Anda cukup mengedit file playlist-data.js untuk memperbarui daftar lagu tanpa perlu mengutak-atik halaman WordPress lagi.
LIHAT JUGA; Mengenal Google Gemini AI: Masa Depan Kecerdasan Buatan
Â
Berikut adalah artikel lengkap mengenai Strategi Pertahanan Berlapis: Mengamankan Website dengan Cloudflare WAF. Strategi penerapan…
Strategi Keamanan Web: MengapaTrafik ASN Pusat Data Wajib Di-Challenge? Dalam pengelolaan strategi keamanan web modern,…
Membuat Security Rules Cloudflare adalah langkah krusial untuk melindungi situs WordPress dari serangan brute force,…
Arsitektur Modern & Performa Tinggi Halaman ini dibangun menggunakan framework Next JS dan dideploy melalui…
Code Snipet Multi Bahasa Sebelum mulai langkah-langkah injeksi Code Snipet Multi Bahasa Gratis Tanpa plugin…
Panduan Pro: Membuat WordPress Multi-Bahasa Tanpa Plugin (WPML/Polylang) Cara Membuat WordPress Multi bahasa Tanpa Plugin…