import fs from "fs" import path from "path" let cachedData: any = null /** * Load WordPress processed content * This must only be called server-side (in getStaticProps, getServerSideProps, or API routes) */ export function loadWordPressData() { if (cachedData) { return cachedData } try { // In Next.js, process.cwd() returns the code directory (where Next.js runs from) const dataPath = path.join( process.cwd(), "lib", "wordpress-data", "processed-content.json" ) // Check if file exists if (!fs.existsSync(dataPath)) { // Silently return empty data in production if (process.env.NODE_ENV === "development") { console.error("WordPress data file not found at:", dataPath) } return { pages: [], posts: [], images: [] } } const data = JSON.parse(fs.readFileSync(dataPath, "utf8")) cachedData = data return data } catch (e) { // Silently return empty data in production if (process.env.NODE_ENV === "development") { console.error("Could not load WordPress data:", e) } return { pages: [], posts: [], images: [] } } } /** * Load image mapping */ export function loadImageMappingData() { try { const mappingPath = path.join( process.cwd(), "lib", "wordpress-data", "image-mapping.json" ) const mapping = JSON.parse(fs.readFileSync(mappingPath, "utf8")) return mapping } catch (e) { // Silently return empty array in production if (process.env.NODE_ENV === "development") { console.warn("Could not load image mapping:", e) } return [] } } /** * Get page by slug */ export function getPageBySlug(slug: string) { const data = loadWordPressData() return data.pages.find((p: any) => p.slug === slug) } /** * Get post by slug and date */ export function getPostBySlugAndDate( slug: string, year: string, month: string, day: string ) { const data = loadWordPressData() return data.posts.find( (p: any) => p.slug === slug && p.dateComponents?.year === year && p.dateComponents?.month === month && p.dateComponents?.day === day ) } /** * Get all page slugs for static generation */ export function getAllPageSlugs() { const data = loadWordPressData() return data.pages.map((p: any) => p.slug) } /** * Get all post params for static generation */ export function getAllPostParams() { const data = loadWordPressData() return data.posts .map((p: any) => { if (!p.dateComponents) return null return { year: p.dateComponents.year, month: p.dateComponents.month, day: p.dateComponents.day, slug: p.slug, } }) .filter(Boolean) }