1document.addEventListener("DOMContentLoaded", function () { 2 const sectorDropdown = document.querySelector(".blog-widget #filter-sectors"); 3 const topicDropdown = document.querySelector(".blog-widget #filter-topics"); 4 const filterButton = document.querySelector(".blog-widget #filter-button"); 5 6 // Check if the filterButton exists before adding the event listener 7 if (filterButton) { 8 filterButton.addEventListener("click", function () { 9 var selectedSector = "";//sectorDropdown ? sectorDropdown.value : null; 10 var selectedTopic = "";//topicDropdown ? topicDropdown.value : null; 11 12 // console.log("Selected Sector:", selectedSector); 13 // console.log("Selected Topic:", selectedTopic); 14 15 const filterTopics = jQuery('.blog-widget #filter-topics').val(); // Returns an array of selected values 16 if (filterTopics && filterTopics.length) { 17 selectedTopic = filterTopics.join(', '); 18 } 19 20 const filterSectors = jQuery('.blog-widget #filter-sectors').val(); // Returns an array of selected values 21 if (filterSectors && filterSectors.length) { 22 selectedSector = filterSectors.join(', '); 23 } 24 25 // Call the fetchFilteredPosts function with the selected values 26 fetchFilteredPosts(selectedSector, selectedTopic); 27 }); 28 } 29}); 30 31 32// function fetchFilteredPosts(sector, topic) { 33// // Create a FormData object 34// var formData = new FormData(); 35// formData.append("action", "filter_posts"); 36// formData.append("sector", sector); 37// formData.append("topic", topic); 38 39// console.log(sector); 40// console.log(topic); 41 42// // Send the data to the server via AJAX 43// fetch("/wp-admin/admin-ajax.php", { 44// method: "POST", 45// body: formData 46// }) 47// .then(response => response.text()) 48// .then(data => { 49// console.log(data); 50// // if (data.success) { 51// const grid = document.querySelector(".widget-blog-grid"); 52// grid.innerHTML = ""; 53// grid.innerHTML = data; 54// // } else { 55// // alert(data.message || "There was an error fetching the posts"); 56// // } 57// }) 58// .catch(error => { 59// console.error("Error fetching filtered posts:", error); 60// }); 61// } 62 63 64function fetchFilteredPosts(sector, topic) { 65 const formData = new FormData(); 66 formData.append("action", "filter_posts"); 67 formData.append("sector", sector || ""); 68 formData.append("topic", topic || ""); 69 if (typeof PostsWidgetAjax !== "undefined") { 70 formData.append("_ajax_nonce", PostsWidgetAjax.nonce); 71 } 72 73 // Usa la URL correcta por sitio 74 const ajaxUrl = (typeof PostsWidgetAjax !== "undefined" && PostsWidgetAjax.ajax_url) 75 ? PostsWidgetAjax.ajax_url 76 : (location.origin + "/wp-admin/admin-ajax.php"); // fallback de emergencia 77 78 fetch(ajaxUrl, { method: "POST", body: formData, credentials: "same-origin" }) 79 .then(r => r.text()) 80 .then(html => { 81 const grid = document.querySelector(".widget-blog-grid"); 82 if (grid) grid.innerHTML = html; 83 }) 84 .catch(err => console.error("AJAX error:", err)); 85} 86 87
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.