updated query results

This commit is contained in:
2026-02-01 13:27:34 +01:00
parent 58961157dd
commit 4bd996cd5c
2 changed files with 23 additions and 37 deletions

View File

@@ -74,10 +74,11 @@ class Partnerexpo_Core_Public {
foreach ($query->posts as $post) { foreach ($query->posts as $post) {
$posts[] = [ $posts[] = [
'id' => $post->ID, 'id' => $post->ID,
'title' => $post->post_title, 'title' => $post->post_title,
'slug' => $post->post_name, 'image' => get_the_post_thumbnail_url($post->ID),
'url' => get_permalink($post), 'excerpt' => $post->post_excerpt,
'url' => get_permalink($post),
]; ];
} }

View File

@@ -89,25 +89,12 @@ document.addEventListener('DOMContentLoaded', () => {
masonry.style.opacity = "0.5"; masonry.style.opacity = "0.5";
try { try {
// REPLACE THIS URL with your actual endpoint const response = await fetch(`/wp-json/pexpo/v1/query?q=${encodeURIComponent(query)}&limit=${filters.maxResults}`);
const response = await fetch(`/pexpo/v1/query?q=${encodeURIComponent(query)}&limit=${filters.maxResults}`);
const data = await response.json(); const data = await response.json();
// --- SIMULATED FETCH FOR DEMO (Remove this block in production) ---
// await new Promise(r => setTimeout(r, 600)); // Fake network delay
// const data = simulateBackendResponse(query);
// ------------------------------------------------------------------
console.log(data);
results = data; results = data;
// 2. Compute local relevance if the API doesn't return it
// If your API returns a 'relevance' score, skip this.
computeLocalRelevance(query);
// 3. Render requestLayout();
requestLayout();
} catch (error) { } catch (error) {
console.error("Search failed:", error); console.error("Search failed:", error);
@@ -117,20 +104,20 @@ document.addEventListener('DOMContentLoaded', () => {
} }
} }
// Simple client-side scorer if API doesn't rank them // FOR TESTING ONLY REMOVE IN PROD
function computeLocalRelevance(query) { // function computeLocalRelevance(query) {
if (!query) { // if (!query) {
results.forEach(r => r.relevance = r.score); // results.forEach(r => r.relevance = r.score);
return; // return;
} // }
const q = query.toLowerCase(); // const q = query.toLowerCase();
results.forEach(r => { // results.forEach(r => {
let hits = 0; // let hits = 0;
if (r.title.toLowerCase().includes(q)) hits += 50; // if (r.title.toLowerCase().includes(q)) hits += 50;
if (r.desc.toLowerCase().includes(q)) hits += 20; // if (r.desc.toLowerCase().includes(q)) hits += 20;
r.relevance = hits + r.score; // r.relevance = hits + r.score;
}); // });
} // }
// ---------- Layout & Masonry Logic ---------- // ---------- Layout & Masonry Logic ----------
const minCard = () => Number(getComputedStyle(document.documentElement).getPropertyValue("--cardMin")) || 240; const minCard = () => Number(getComputedStyle(document.documentElement).getPropertyValue("--cardMin")) || 240;
@@ -215,12 +202,10 @@ document.addEventListener('DOMContentLoaded', () => {
colEls.push(col); colEls.push(col);
} }
// Sort const sliced = results.slice();
const sorter = SORTS[activeSortKey] || SORTS.relevance;
const ranked = results.slice().sort(sorter.compare);
// Measure & Pack // Measure & Pack
const { measured } = measureCardHeights(cols, ranked); const { measured } = measureCardHeights(cols, sliced);
const placements = packRankAware(measured, cols, 6); const placements = packRankAware(measured, cols, 6);
// Render // Render