{"id":9257,"date":"2024-09-25T06:16:07","date_gmt":"2024-09-25T06:16:07","guid":{"rendered":"https:\/\/simple-simon.com\/blog\/"},"modified":"2026-10-22T10:18:34","modified_gmt":"2026-10-22T10:18:34","slug":"blog","status":"publish","type":"page","link":"https:\/\/simple-simon.com\/de\/blog\/","title":{"rendered":"Blog"},"content":{"rendered":"\n\n\n<section class=\"theme-header-banner bg__blue text__white  theme-p-sm\">\n\t<div class=\"container\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-md-12\">\n\t\t\t\t<h1>Blog<\/h1>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/section>\n\n\n<div class=\"wp-block-getwid-advanced-spacer\" style=\"height:64px\" aria-hidden=\"true\"><\/div>\n\n\n\n<!--\n  Simple-Simon blogoverzicht + categoriefilter (vervangt FacetWP)\n  ----------------------------------------------------------------\n  Vervangt deze twee shortcodes op de blogpagina's:\n    [facetwp facet=\"blog_categories\"]\n    [facetwp template=\"blog_posts\"]\n\n  Haalt de berichten op via de standaard WordPress REST API, dus nieuwe\n  berichten en categorie\u00ebn verschijnen automatisch. Werkt voor NL\/DE\/EN\/FR\n  (taal wordt herkend aan <html lang=\"...\">). Gebruikt de bestaande\n  thema-styling (theme-news kaarten, blauwe categorieknoppen).\n  Bestaande links als \/blog\/?_blog_categories=klantencases blijven werken.\n-->\n<div id=\"ss-blog\" class=\"ss-blog\">\n  <div class=\"ss-blog__filters facetwp-facet-blog_categories\" role=\"group\" aria-label=\"Blog categorie\u00ebn\"><\/div>\n  <div class=\"ss-blog__grid row\" aria-live=\"polite\"><\/div>\n  <div class=\"ss-blog__more\" style=\"text-align:center;margin-bottom:48px;\"><\/div>\n<\/div>\n\n<style>\n  .ss-blog__filters button.facetwp-radio { border: 0; font: inherit; font-size: 16px; line-height: 100%; }\n  .ss-blog__filters button.facetwp-radio:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }\n  .ss-blog__filters { margin-bottom: 36px; }\n  .ss-blog__more button { border: 0; font: inherit; cursor: pointer; }\n  .ss-blog__grid.is-loading { opacity: .5; transition: opacity .2s; }\n<\/style>\n\n<script>\n(function () {\n  var root = document.getElementById('ss-blog');\n  if (!root) return;\n\n  var PER_PAGE = 24;\n  var lang = (document.documentElement.lang || 'nl').slice(0, 2).toLowerCase();\n  var T = {\n    nl: { all: 'Alles', more: 'Meer laden', none: 'Geen resultaten gevonden', error: 'De berichten konden niet worden geladen.' },\n    de: { all: 'Alle',  more: 'Mehr laden', none: 'Keine Ergebnisse gefunden', error: 'Die Beitr\u00e4ge konnten nicht geladen werden.' },\n    en: { all: 'All',   more: 'Load more',  none: 'No results found', error: 'The posts could not be loaded.' },\n    fr: { all: 'Tous',  more: 'Voir plus',  none: 'Aucun r\u00e9sultat trouv\u00e9', error: 'Les articles n\u2019ont pas pu \u00eatre charg\u00e9s.' }\n  }[lang] || null;\n  if (!T) { lang = 'nl'; T = { all: 'Alles', more: 'Meer laden', none: 'Geen resultaten gevonden', error: 'De berichten konden niet worden geladen.' }; }\n\n  var API = '\/wp-json\/wp\/v2\/';\n  var filtersEl = root.querySelector('.ss-blog__filters');\n  var gridEl = root.querySelector('.ss-blog__grid');\n  var moreEl = root.querySelector('.ss-blog__more');\n\n  var cats = [];          \/\/ [{id, name, slug, count}]\n  var catById = {};\n  var current = '';       \/\/ slug, '' = alles\n  var page = 1;\n  var totalPages = 1;\n\n  function text(html) { var d = document.createElement('div'); d.innerHTML = html || ''; return d.textContent || ''; }\n  function el(tag, cls, txt) { var e = document.createElement(tag); if (cls) e.className = cls; if (txt != null) e.textContent = txt; return e; }\n  function fmtDate(iso) { var p = (iso || '').slice(0, 10).split('-'); return p.length === 3 ? p[2] + '-' + p[1] + '-' + p[0] : ''; }\n\n  function getJSON(url) {\n    return fetch(url, { credentials: 'same-origin' }).then(function (r) {\n      if (!r.ok) throw new Error(r.status);\n      return r.json().then(function (data) {\n        return { data: data, pages: parseInt(r.headers.get('X-WP-TotalPages') || '1', 10) };\n      });\n    });\n  }\n\n  function renderFilters() {\n    filtersEl.innerHTML = '';\n    var all = [{ slug: '', label: T.all }].concat(cats.map(function (c) {\n      return { slug: c.slug, label: c.name, count: c.count };\n    }));\n    all.forEach(function (c) {\n      var b = el('button', 'facetwp-radio' + (c.slug === current ? ' checked' : ''));\n      b.type = 'button';\n      b.setAttribute('aria-pressed', c.slug === current ? 'true' : 'false');\n      b.appendChild(el('span', 'facetwp-display-value', c.label));\n      if (c.count != null) b.appendChild(el('span', 'facetwp-counter', ' (' + c.count + ')'));\n      b.addEventListener('click', function () {\n        if (c.slug === current) return;\n        current = c.slug;\n        updateUrl();\n        renderFilters();\n        load(true);\n      });\n      filtersEl.appendChild(b);\n    });\n  }\n\n  function card(p) {\n    var media = p._embedded && p._embedded['wp:featuredmedia'] && p._embedded['wp:featuredmedia'][0];\n    var img = '';\n    if (media && media.source_url) {\n      var s = media.media_details && media.media_details.sizes;\n      img = (s && (s.large || s.medium_large) && (s.large || s.medium_large).source_url) || media.source_url;\n    }\n    var title = text(p.title && p.title.rendered);\n    var cat = (p.categories || []).map(function (id) { return catById[id]; }).filter(Boolean)[0];\n\n    var col = el('div', 'col-md-3 mb-5');\n    var news = el('div', 'theme-news bg__white');\n    var top = el('div', 'theme-news__top');\n    if (img) {\n      var im = document.createElement('img');\n      im.src = img; im.alt = title; im.loading = 'lazy'; im.decoding = 'async';\n      top.appendChild(im);\n    }\n    var catWrap = el('div', 'theme-news__top-category');\n    if (cat) catWrap.appendChild(el('span', null, cat.name));\n    top.appendChild(catWrap);\n\n    var content = el('div', 'theme-news__content');\n    var ct = el('div', 'theme-news__content-top');\n    ct.appendChild(el('span', null, fmtDate(p.date)));\n    content.appendChild(ct);\n    var pt = el('p'); pt.appendChild(el('strong', null, title)); content.appendChild(pt);\n    content.appendChild(el('p'));\n    var a = el('a', 'theme-link'); a.href = p.link; a.setAttribute('aria-label', title);\n    a.appendChild(el('i', 'bi bi-chevron-right'));\n    content.appendChild(a);\n\n    news.appendChild(top); news.appendChild(content); col.appendChild(news);\n    return col;\n  }\n\n  function load(reset) {\n    if (reset) { page = 1; }\n    gridEl.classList.add('is-loading');\n    var q = API + 'posts?per_page=' + PER_PAGE + '&page=' + page + '&lang=' + lang +\n            '&_embed=wp:featuredmedia&_fields=id,date,link,title,categories,_links,_embedded';\n    var c = cats.filter(function (x) { return x.slug === current; })[0];\n    if (c) q += '&categories=' + c.id;\n\n    getJSON(q).then(function (res) {\n      totalPages = res.pages;\n      if (reset) gridEl.innerHTML = '';\n      res.data.forEach(function (p) { gridEl.appendChild(card(p)); });\n      if (!gridEl.children.length) gridEl.appendChild(el('div', 'col-12', T.none));\n      renderMore();\n    }).catch(function () {\n      if (reset) gridEl.innerHTML = '';\n      gridEl.appendChild(el('div', 'col-12', T.error));\n    }).then(function () { gridEl.classList.remove('is-loading'); });\n  }\n\n  function renderMore() {\n    moreEl.innerHTML = '';\n    if (page >= totalPages) return;\n    var b = el('button', 'theme-btn theme-btn__blue-gradient', T.more);\n    b.type = 'button';\n    b.addEventListener('click', function () { page++; b.disabled = true; load(false); });\n    moreEl.appendChild(b);\n  }\n\n  function updateUrl() {\n    try {\n      var u = new URL(window.location.href);\n      if (current) u.searchParams.set('_blog_categories', current); else u.searchParams.delete('_blog_categories');\n      history.replaceState(null, '', u.toString());\n    } catch (e) {}\n  }\n\n  getJSON(API + 'categories?per_page=100&hide_empty=true&lang=' + lang + '&_fields=id,name,slug,count')\n    .then(function (res) {\n      cats = res.data.filter(function (c) { return c.count > 0; })\n                     .sort(function (a, b) { return b.count - a.count; });\n      cats.forEach(function (c) { catById[c.id] = c; });\n      try {\n        var want = new URL(window.location.href).searchParams.get('_blog_categories') || '';\n        if (cats.some(function (c) { return c.slug === want; })) current = want;\n      } catch (e) {}\n      renderFilters();\n      load(true);\n    })\n    .catch(function () { gridEl.appendChild(el('div', 'col-12', T.error)); });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":12,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"tags":[],"class_list":["post-9257","page","type-page","status-publish","hentry"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/pages\/9257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/comments?post=9257"}],"version-history":[{"count":5,"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/pages\/9257\/revisions"}],"predecessor-version":[{"id":20689,"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/pages\/9257\/revisions\/20689"}],"wp:attachment":[{"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/media?parent=9257"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simple-simon.com\/de\/wp-json\/wp\/v2\/tags?post=9257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}