Estoy tratando de bloquear o quitar de la cola todos los scripts de la página en carga y cuando el usuario realiza cualquier evento como hacer clic, desplazarse o presionar, vuelva a cargar o volver a poner en cola todos los scripts. Estoy usando javascript para detectar eventos y cuando ocurre cualquier evento, hago una llamada AJAX para ir al código php y poner en cola los scripts. Puedo sacar los scripts de la cola, pero no puedo volver a ponerlos en cola. Aquí está mi código:
// Para eliminar scripts
add_action('wp_print_scripts', 'remove_all_scripts_ir'); function remove_all_scripts_ir(){ global $wp_scripts; $oldScripts = $wp_scripts->queue; if(!is_admin()){ // Dequeue All Scripts $wp_scripts->queue = array(); echo "<input type='hidden' name='reload-scripts' value='".wp_json_encode($oldScripts)."' id='reload-scripts' />"; ?> <script> scripts = document.getElementById("reload-scripts").value; window.addEventListener("click",function(){ <?php echo "console.log('clicked_php')"; ?> postAjax("<?= admin_url("admin-ajax.php") ?>", { scripts:scripts,action:"ir_reload_scripts" }, function(data){ console.log(data); }); }); function postAjax(url, data, success) { var params = typeof data == 'string' ? data : Object.keys(data).map( function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) } ).join('&'); var xhr = new XMLHttpRequest(); xhr.open('POST', url); xhr.onreadystatechange = function() { if (xhr.readyState>3 && xhr.status==200) { success(xhr.responseText); } }; xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(params); return xhr; } </script> <?php } }Aquí está el código para recargar el script.
add_action( "wp_ajax_nopriv_ir_reload_scripts", function(){ $scr = $_POST["scripts"]; $scrNew = str_replace("\\\"","\"",$scr); echo $scrNew; $scripts = json_decode($scrNew); add_action( "wp_print_scripts",function() use ($scripts){ global $wp_scripts; $wp_scripts->queue = $scripts; }); die(); });