diff --git a/wp-content/plugins/vf-embl-news-block/template.php b/wp-content/plugins/vf-embl-news-block/template.php index eb9eac37d..6e8ef78be 100644 --- a/wp-content/plugins/vf-embl-news-block/template.php +++ b/wp-content/plugins/vf-embl-news-block/template.php @@ -153,82 +153,89 @@ $fetchPosts = ''; + console.log("Fetching from:", endpoints); + + try { + const responses = await Promise.all(endpoints.map(endpoint => fetch(endpoint))); + const data = await Promise.all(responses.map(response => response.ok ? response.json() : Promise.reject(response.statusText))); + + let mergedPosts = data.flatMap(item => Array.isArray(item) ? item : (Array.isArray(item.posts) ? item.posts : [])); + if (mergedPosts.length === 0) { + console.warn("No posts found."); + return; + } + + cachedPosts = mergedPosts.map(post => ({ + id: post.id, + title: post.title?.rendered || post.title || "No title", + date: post.date || new Date().toISOString(), + excerpt: post.excerpt?.rendered ? post.excerpt.rendered.replace(/<[^>]+>/g, "") : (post.excerpt || ""), + image: post.featured_image_src, + url: post.link || post.url || "#" + })).sort((a, b) => new Date(b.date) - new Date(a.date)); + + cachedPosts = cachedPosts.slice(0, 4); + renderPosts(cachedPosts, header, headerURL); + } catch (error) { + console.error("Error fetching data:", error); + } + } + + function renderPosts(posts, header, headerURL) { + const container = document.querySelector("#vf-news-container"); + if (!container) { + console.error("Container with ID #vf-news-container not found."); + return; + } + + const htmlContent = ` + + `; + container.innerHTML = htmlContent; + } + + fetchAndDisplayLatestProjects(); +}); + +'; echo $fetchPosts; // Re-add wrappers after content