// Inserta el reproductor fijo + preferencias
add_action(‘wp_body_open’, function () {
$audio_url = ‘https://tu-dominio.com/wp-content/uploads/banda-sonora.mp3’; // <-- tu MP3
?>
0){ audio.currentTime = p.pos; }
// Intento de autoplay si el usuario marcó ‘Reproducir siempre’ y no se dio de baja
if(p.always && !p.optOut){
tryPlay().finally(show);
} else {
show(); setBtn(false);
}
// Guardar posición periódicamente
audio.addEventListener(‘timeupdate’, function(){ if(!audio.paused) savePos(); });
window.addEventListener(‘beforeunload’, savePos);
btn.addEventListener(‘click’, function(){
if(audio.paused){
tryPlay().then(function(){ localStorage.setItem(‘uaf_audio_optout’,’0′); });
} else {
audio.pause(); setBtn(false); localStorage.setItem(‘uaf_audio_optout’,’1′); // No auto-reproducir próximas veces si pausó manual
}
});
muteBtn.addEventListener(‘click’, function(){
audio.muted = !audio.muted; setMute(audio.muted);
localStorage.setItem(‘uaf_audio_muted’, audio.muted ? ‘1’ : ‘0’);
});
always.addEventListener(‘change’, function(){
localStorage.setItem(‘uaf_audio_always’, this.checked ? ‘1’ : ‘0’);
if(this.checked && audio.paused){ tryPlay(); }
});
audio.addEventListener(‘pause’, function(){ setBtn(false); });
audio.addEventListener(‘play’, function(){ setBtn(true); });
}
if(document.readyState === ‘loading’){ document.addEventListener(‘DOMContentLoaded’, init); }
else { init(); }
})();
«;
wp_register_script(‘uaf-audio’, false);
wp_enqueue_script(‘uaf-audio’);
wp_add_inline_script(‘uaf-audio’, $js);
});
add_action(‘wp_enqueue_scripts’, function () {
// Estilos mínimos
$css = »
#uaf-audio-wrap{position:fixed;right:16px;bottom:16px;z-index:9999;display:flex;gap:10px;align-items:center;background:rgba(0,0,0,.6);backdrop-filter:saturate(120%) blur(6px);padding:8px 12px;border-radius:12px}
.uaf-audio-hidden{opacity:0;pointer-events:none;transition:opacity .25s}
.uaf-audio-show{opacity:1;pointer-events:auto}
.uaf-audio-btn{appearance:none;border:none;border-radius:10px;padding:8px 10px;color:#fff;background:rgba(255,255,255,.15);cursor:pointer;font-size:14px}
.uaf-audio-btn:hover{background:rgba(255,255,255,.25)}
.uaf-audio-switch{color:#fff;font-size:13px;display:flex;align-items:center;gap:6px}
.uaf-audio-switch input{accent-color:#fff}
«;
wp_add_inline_style(‘wp-block-library’, $css);
// Lógica JS: bucle infinito, consentimiento, auto-reanudación entre páginas
$js = »
(function(){
var audio, wrap, btn, muteBtn, always;
function qs(id){return document.getElementById(id);}
function show(){wrap.classList.add(‘uaf-audio-show’); wrap.classList.remove(‘uaf-audio-hidden’);}
function setBtn(isPlaying){btn.textContent = isPlaying ? ‘⏸︎’ : ‘▶︎’; btn.title = isPlaying ? ‘Pausar’ : ‘Reproducir’; btn.setAttribute(‘aria-label’, btn.title+’ banda sonora’);}
function setMute(isMuted){muteBtn.textContent = isMuted ? ‘🔈’ : ‘🔇’; muteBtn.title = isMuted ? ‘Activar sonido’ : ‘Silenciar’; muteBtn.setAttribute(‘aria-label’, muteBtn.title);}
function loadPrefs(){
return {
optOut: localStorage.getItem(‘uaf_audio_optout’) === ‘1’,
muted: localStorage.getItem(‘uaf_audio_muted’) === ‘1’,
always: localStorage.getItem(‘uaf_audio_always’) === ‘1’,
pos: parseFloat(localStorage.getItem(‘uaf_audio_pos’) || ‘0’)
};
}
function savePos(){
try{ localStorage.setItem(‘uaf_audio_pos’, String(audio.currentTime||0)); }catch(e){}
}
function tryPlay(){
return audio.play().then(function(){ setBtn(true); }).catch(function(){ setBtn(false); });
}
function init(){
audio = qs(‘uaf-audio’); wrap = qs(‘uaf-audio-wrap’); btn = qs(‘uaf-audio-toggle’); muteBtn = qs(‘uaf-audio-mute’); always = qs(‘uaf-audio-always’);
if(!audio||!wrap||!btn||!muteBtn||!always) return;
var p = loadPrefs();
audio.muted = p.muted; setMute(p.muted);
always.checked = p.always;
// Reanudar desde la última posición (si tenía sonido activo)
if(!isNaN(p.pos) && p.pos > 0){ audio.currentTime = p.pos; }
// Intento de autoplay si el usuario marcó ‘Reproducir siempre’ y no se dio de baja
if(p.always && !p.optOut){
tryPlay().finally(show);
} else {
show(); setBtn(false);
}
// Guardar posición periódicamente
audio.addEventListener(‘timeupdate’, function(){ if(!audio.paused) savePos(); });
window.addEventListener(‘beforeunload’, savePos);
btn.addEventListener(‘click’, function(){
if(audio.paused){
tryPlay().then(function(){ localStorage.setItem(‘uaf_audio_optout’,’0′); });
} else {
audio.pause(); setBtn(false); localStorage.setItem(‘uaf_audio_optout’,’1′); // No auto-reproducir próximas veces si pausó manual
}
});
muteBtn.addEventListener(‘click’, function(){
audio.muted = !audio.muted; setMute(audio.muted);
localStorage.setItem(‘uaf_audio_muted’, audio.muted ? ‘1’ : ‘0’);
});
always.addEventListener(‘change’, function(){
localStorage.setItem(‘uaf_audio_always’, this.checked ? ‘1’ : ‘0’);
if(this.checked && audio.paused){ tryPlay(); }
});
audio.addEventListener(‘pause’, function(){ setBtn(false); });
audio.addEventListener(‘play’, function(){ setBtn(true); });
}
if(document.readyState === ‘loading’){ document.addEventListener(‘DOMContentLoaded’, init); }
else { init(); }
})();
«;
wp_register_script(‘uaf-audio’, false);
wp_enqueue_script(‘uaf-audio’);
wp_add_inline_script(‘uaf-audio’, $js);
});