updated query results
This commit is contained in:
@@ -74,10 +74,11 @@ class Partnerexpo_Core_Public {
|
||||
|
||||
foreach ($query->posts as $post) {
|
||||
$posts[] = [
|
||||
'id' => $post->ID,
|
||||
'title' => $post->post_title,
|
||||
'slug' => $post->post_name,
|
||||
'url' => get_permalink($post),
|
||||
'id' => $post->ID,
|
||||
'title' => $post->post_title,
|
||||
'image' => get_the_post_thumbnail_url($post->ID),
|
||||
'excerpt' => $post->post_excerpt,
|
||||
'url' => get_permalink($post),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -89,24 +89,11 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
masonry.style.opacity = "0.5";
|
||||
|
||||
try {
|
||||
// REPLACE THIS URL with your actual endpoint
|
||||
const response = await fetch(`/pexpo/v1/query?q=${encodeURIComponent(query)}&limit=${filters.maxResults}`);
|
||||
const response = await fetch(`/wp-json/pexpo/v1/query?q=${encodeURIComponent(query)}&limit=${filters.maxResults}`);
|
||||
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;
|
||||
|
||||
// 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();
|
||||
|
||||
} catch (error) {
|
||||
@@ -117,20 +104,20 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
}
|
||||
}
|
||||
|
||||
// Simple client-side scorer if API doesn't rank them
|
||||
function computeLocalRelevance(query) {
|
||||
if (!query) {
|
||||
results.forEach(r => r.relevance = r.score);
|
||||
return;
|
||||
}
|
||||
const q = query.toLowerCase();
|
||||
results.forEach(r => {
|
||||
let hits = 0;
|
||||
if (r.title.toLowerCase().includes(q)) hits += 50;
|
||||
if (r.desc.toLowerCase().includes(q)) hits += 20;
|
||||
r.relevance = hits + r.score;
|
||||
});
|
||||
}
|
||||
// FOR TESTING ONLY REMOVE IN PROD
|
||||
// function computeLocalRelevance(query) {
|
||||
// if (!query) {
|
||||
// results.forEach(r => r.relevance = r.score);
|
||||
// return;
|
||||
// }
|
||||
// const q = query.toLowerCase();
|
||||
// results.forEach(r => {
|
||||
// let hits = 0;
|
||||
// if (r.title.toLowerCase().includes(q)) hits += 50;
|
||||
// if (r.desc.toLowerCase().includes(q)) hits += 20;
|
||||
// r.relevance = hits + r.score;
|
||||
// });
|
||||
// }
|
||||
|
||||
// ---------- Layout & Masonry Logic ----------
|
||||
const minCard = () => Number(getComputedStyle(document.documentElement).getPropertyValue("--cardMin")) || 240;
|
||||
@@ -215,12 +202,10 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
colEls.push(col);
|
||||
}
|
||||
|
||||
// Sort
|
||||
const sorter = SORTS[activeSortKey] || SORTS.relevance;
|
||||
const ranked = results.slice().sort(sorter.compare);
|
||||
const sliced = results.slice();
|
||||
|
||||
// Measure & Pack
|
||||
const { measured } = measureCardHeights(cols, ranked);
|
||||
const { measured } = measureCardHeights(cols, sliced);
|
||||
const placements = packRankAware(measured, cols, 6);
|
||||
|
||||
// Render
|
||||
|
||||
Reference in New Issue
Block a user