Сценарии очереди WordPress после событий пользователя, например, нажмите

#javascript #wordpress #scripting #hook #enqueue

Вопрос:

Я пытаюсь заблокировать или удалить из очереди все сценарии страницы при загрузке, и когда пользователь выполняет какое-либо событие, такое как щелчок, прокрутка или нажатие клавиши, затем перезагрузите или повторно поставьте в очередь все сценарии. Я использую javascript для обнаружения событий, и когда происходит какое-либо событие, я вызываю AJAX для перехода к php-коду и ставлю в очередь сценарии. Я могу удалить из очереди сценарии, но я не могу снова поставить их в очередь. Вот мой код:

// Для Удаления Скриптов

 add_action('wp_print_scripts', 'remove_all_scripts_ir');   function remove_all_scripts_ir(){  global $wp_scripts;  $oldScripts = $wp_scripts-gt;queue;  if(!is_admin()){  // Dequeue All Scripts   $wp_scripts-gt;queue = array();  echo "lt;input type='hidden' name='reload-scripts' value='".wp_json_encode($oldScripts)."' id='reload-scripts' /gt;";   ?gt;  lt;scriptgt;  scripts = document.getElementById("reload-scripts").value;   window.addEventListener("click",function(){   lt;?php echo "console.log('clicked_php')"; ?gt;   postAjax("lt;?= admin_url("admin-ajax.php") ?gt;", { 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('amp;');   var xhr = new XMLHttpRequest();  xhr.open('POST', url);  xhr.onreadystatechange = function() {  if (xhr.readyStategt;3 amp;amp; 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;  }  lt;/scriptgt;  lt;?php  } }  

Вот код для перезагрузки скрипта

 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-gt;queue = $scripts;  });  die(); });  

Комментарии:

1. Вы не можете загружать сценарии без перезагрузки страницы