{"id":1669,"date":"2024-10-06T13:23:34","date_gmt":"2024-10-06T12:23:34","guid":{"rendered":"https:\/\/www.besacc-vca.be\/?p=1669"},"modified":"2025-02-21T10:50:45","modified_gmt":"2025-02-21T09:50:45","slug":"centrum-met-opleidingen-per-taal","status":"publish","type":"post","link":"https:\/\/www.besacc-vca.be\/en\/centrum-met-opleidingen-per-taal\/","title":{"rendered":"Centre with training by language"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1669\" class=\"elementor elementor-1669\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-452f5e3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"452f5e3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-356a575\" data-id=\"356a575\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-45d11c6 elementor-widget elementor-widget-html\" data-id=\"45d11c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t  <script type=\"text\/javascript\">\n    \/\/ base script block, this needs to be first to set up the basic code, only include once per page\n    window.centersTableScript = function(tableSelector, columnConfiguration) {\n      window.centersTableScriptGlobals = window.centersTableScriptGlobals ?? {}\n      const queryParams = new URLSearchParams(document.location.search)\n\n      const tableState = {\n        sortBy: undefined,\n        sortOrderAsc: true,\n        filters: new Map()\n      }\n      const parentElement = document.querySelector(tableSelector)\n      if (parentElement == null) return\n      function onJsonLoaded() {\n        buildFilters()\n        buildTable()\n      }\n\n      const lettersOnlyRegex = \/^[a-z]+$\/i\n        const keyReplacementRegex = \/({[a-z]+})\/gi\n      function getCellValue(rowData, key) {\n        if (lettersOnlyRegex.test(key)) {\n          return rowData[key]\n        }\n        keyReplacementRegex.lastIndex = 0\n        const matches = key.match(keyReplacementRegex)\n        let result = key\n        for (const match of matches) {\n          const matchKey = match.substring(1, match.length - 1)\n          let value = rowData[matchKey] ?? ''\n          if (Array.isArray(value)) value = value.join(', ')\n          result = result.replaceAll(match, value)\n        }\n        return result          \n      }\n\n      const classNameRegex = \/[^a-z0-9\\-]*\/gi\n      function getColumnClass(key) {\n        classNameRegex.lastIndex = 0\n        return `column-${key.replaceAll(classNameRegex, '')}`\n      }\n\n      function buildFilters() {\n        const filterColumnConfigurations = columnConfiguration.filter(cc => cc.showFilter)\n        if (filterColumnConfigurations.length > 0) {\n          const filterWrapperElement = createAppendElement('div')\n          filterWrapperElement.classList.add('filter-wrapper')\n\n          for (const colConfig of filterColumnConfigurations) {\n            const filterBlockElement = createAppendElement('label', filterWrapperElement)\n            const filterLabel = createAppendElement('span', filterBlockElement)\n            filterLabel.textContent = colConfig.label\n            const filterInput = createAppendElement('input', filterBlockElement)\n            filterInput.setAttribute('type', 'text')\n            filterInput.oninput = () => {\n              const filterValue = (filterInput.value ?? '').toLowerCase()\n              if (filterValue === '') tableState.filters.delete(colConfig.key)\n              else tableState.filters.set(colConfig.key, filterValue)\n              buildTable()\n            }\n          }\n          \n          \/\/ add or replace the DOM elements\n          const existingFilterWrapperElement = parentElement.querySelector('div.filter-wrapper')\n          if (existingFilterWrapperElement == null) {\n            parentElement.appendChild(filterWrapperElement)\n          } else {\n            existingFilterWrapperElement.replaceWith(filterWrapperElement)\n          }\n        }\n      }\n\n      function buildTable() {\n        const jsonData = window.centersTableScriptGlobals.jsonData\n        \n        \/\/ build the table\n        const tableElement = createAppendElement('table')\n        tableElement.classList.add('centers-table')\n        \/\/ build the header\n        const tableHeaderRow = createAppendElement('tr', tableElement)\n        for (const colConfig of columnConfiguration) {\n          if (colConfig.show === false) continue\n          const tableHeader = createAppendElement('th', tableHeaderRow)\n          tableHeader.classList.add(getColumnClass(colConfig.key))\n          tableHeader.onclick = () => {\n            console.log(`clicked ${colConfig.key}`)\n            if (tableState.sortBy === colConfig.key) {\n              if (tableState.sortOrderAsc) tableState.sortOrderAsc = false\n              else if (!tableState.sortOrderAsc) tableState.sortBy = undefined\n            } else {\n              tableState.sortBy = colConfig.key\n              tableState.sortOrderAsc = true\n            }\n            buildTable()\n          }\n          const tableLabel = createAppendElement('span', tableHeader)\n          tableLabel.textContent = colConfig.label\n          if (tableState.sortBy === colConfig.key) {\n            const tableSortIndicator = createAppendElement('span', tableHeader)\n            tableSortIndicator.classList.add('sort-indicator')\n            tableSortIndicator.textContent = tableState.sortOrderAsc ? '(oplopend)' : '(aflopend)'\n          }\n        }\n\n        \/\/ get relevant query params\n        const filterQueryValPerColumn = new Map()\n        const matchQueryValPerColumn = new Map()\n        for (const colConfig of columnConfiguration) {\n          if (colConfig.filterQueryParam ?? '' !== '') {\n            const filterQueryVal = queryParams.get(colConfig.filterQueryParam)\n            if (filterQueryVal != null) {\n              filterQueryValPerColumn.set(colConfig.key, filterQueryVal.toLowerCase())\n            }\n          }\n          if (colConfig.matchQueryParam ?? '' !== '') {\n            const matchQueryVal = queryParams.get(colConfig.matchQueryParam)\n            if (matchQueryVal != null) {\n              matchQueryValPerColumn.set(colConfig.key, matchQueryVal)\n            }\n          }\n        }\n        \n        \/\/ filter data\n        const distinctData = new Map()\n        for (const rowData of jsonData) {\n          const rowKeyParts = []\n          let includeRow = true\n          for (const colConfig of columnConfiguration) {\n            const cellValue = getCellValue(rowData, colConfig.key)\n            const filterQueryVal = filterQueryValPerColumn.get(colConfig.key)\n            if (filterQueryVal != null) {\n              if (Array.isArray(cellValue)) {\n                if (!cellValue.some(val => val.toLowerCase().includes(filterQueryVal))) {\n                  includeRow = false\n                  break\n                }\n              } else if (!cellValue.toLowerCase().includes(filterQueryVal)) {\n                  includeRow = false\n                  break\n                }\n            }\n            const filterInputVal = tableState.filters.get(colConfig.key)\n            if (filterInputVal != null) {\n              if (Array.isArray(cellValue)) {\n                if (!cellValue.some(val => val.toLowerCase().includes(filterInputVal))) {\n                  includeRow = false\n                  break\n                }\n              } else if (!cellValue.toLowerCase().includes(filterInputVal)) {\n                  includeRow = false\n                  break\n                }\n            }\n            const matchQueryVal = matchQueryValPerColumn.get(colConfig.key)\n            if (matchQueryVal != null) {\n              if (Array.isArray(cellValue)) {\n                if (!cellValue.some(val => val === matchQueryVal)) {\n                  includeRow = false\n                  break\n                }\n              } else if (cellValue !== matchQueryVal) {\n                  includeRow = false\n                  break\n                }\n            }\n            if (colConfig.combineDistinct !== true) {\n              rowKeyParts.push(Array.isArray(cellValue) ? cellValue.sort().join('') : cellValue)\n            }\n          }\n          if (!includeRow) continue\n          const rowKey = rowKeyParts.join('')\n          const newRowData = distinctData.get(rowKey) ?? {}\n          for (const colConfig of columnConfiguration) {\n            const cellValue = getCellValue(rowData, colConfig.key)\n            if (colConfig.combineDistinct === true) {\n              const existingData = (newRowData[colConfig.key] ?? [])\n              const cellValueArray = Array.isArray(cellValue) ? cellValue : [cellValue]\n              for (const value of cellValueArray) {\n                if (!existingData.includes(value))\n                  newRowData[colConfig.key] = [...existingData, value]\n              }\n              newRowData[colConfig.key] = newRowData[colConfig.key].sort()\n            } else {\n              newRowData[colConfig.key] = cellValue\n            }\n          }\n          newRowData.fullData = [...(newRowData.fullData ?? []), rowData]\n          distinctData.set(rowKeyParts.join(''), newRowData)\n        }\n        \n        \/\/ sort data\n        let sortedRows = Array.from(distinctData.values())\n        if (tableState.sortBy != null) {\n          sortedRows = Array.from(distinctData.values()).sort((a, b) => {\n            if (Array.isArray(a[tableState.sortBy]))\n              return (a[tableState.sortBy] ?? []).join('').localeCompare((b[tableState.sortBy] ?? []).join(''))            \n            return (a[tableState.sortBy] ?? '').localeCompare(b[tableState.sortBy] ?? '')\n          })\n          if (!tableState.sortOrderAsc) sortedRows = sortedRows.reverse()\n        }\n\n        \/\/ build data rows\n        for (const rowData of sortedRows) {\n          const tableDataRow = createAppendElement('tr', tableElement)\n          for (const colConfig of columnConfiguration) {\n            if (colConfig.show === false) continue\n            const tableCell = createAppendElement('td', tableDataRow)\n            tableCell.classList.add(getColumnClass(colConfig.key))\n            const data = rowData[colConfig.key]\n            if (Array.isArray(data))\n              if (colConfig.linkFormat != null) {\n                for (let index = 0; index < data.length; index++) {\n                  const value = data[index];\n                  if (index > 0) {\n                    const spacerElement = createAppendElement('span', tableCell)\n                    spacerElement.textContent = ', '\n                  }\n                  let linkUrl = colConfig.linkFormat\n                  const relatedDataRow = rowData.fullData.find(fd => fd[colConfig.key] === value) ?? rowData.fullData[0]\n                  for (const key in relatedDataRow) {\n                    const replaceValue = key === colConfig.key ? value : relatedDataRow[key]\n                    linkUrl = linkUrl.replaceAll(`{${key}}`, encodeURIComponent(Array.isArray(replaceValue) ? replaceValue.join('') : replaceValue))\n                  }\n                  const linkElement = createAppendElement('a', tableCell)\n                  linkElement.textContent = value\n                  linkElement.setAttribute('href', linkUrl)\n                }\n                data.map(value => value).join(', ')                \n              } else \n                tableCell.textContent = data.join(', ')\n            else {\n              if (colConfig.linkFormat != null) {\n                let linkUrl = colConfig.linkFormat\n                const relatedDataRow = rowData.fullData.find(fd => fd[colConfig.key] === data) ?? rowData.fullData[0]\n                for (const key in relatedDataRow) {\n                  const replaceValue = relatedDataRow[key]\n                  linkUrl = linkUrl.replaceAll(`{${key}}`, encodeURIComponent(Array.isArray(replaceValue) ? replaceValue.join('') : replaceValue))\n                }\n                const linkElement = createAppendElement('a', tableCell)\n                linkElement.textContent = data\n                linkElement.setAttribute('href', linkUrl)\n              } else\n                tableCell.textContent = data\n            }\n          }\n        }\n\n        \/\/ add or replace the DOM elements\n        const existingTableElement = parentElement.querySelector('table.centers-table')\n        if (existingTableElement == null) {\n          parentElement.appendChild(tableElement)\n        } else {\n          existingTableElement.replaceWith(tableElement)\n        }\n      }\n\n      window.centersTableScriptGlobals.onLoadComplete = window.centersTableScriptGlobals.onLoadComplete ?? []\n      window.centersTableScriptGlobals.onLoadComplete.push(() => onJsonLoaded())\n      if (window.centersTableScriptGlobals.loadInProgress !== true && window.centersTableScriptGlobals.jsonData == null) {\n        window.centersTableScriptGlobals.loadInProgress = true\n        getJSON('https:\/\/besacc-site.s3.eu-west-1.amazonaws.com\/centers.json', (jsonData) => {\n          window.centersTableScriptGlobals.jsonData = jsonData\n          window.centersTableScriptGlobals.loadInProgress = false\n          for (const onLoadComplete of window.centersTableScriptGlobals.onLoadComplete) {\n            onLoadComplete()\n          }\n        })\n      }\n      \/\/ helper functions\n      function getJSON(url, callback) {\n        fetch(url)\n          .then(res => res.json())\n          .then(out =>\n          callback( out))\n          .catch(err => console.log(err))\n      }\n      function createAppendElement(tagName, parentElement) {\n        const newElement = document.createElement(tagName)\n        if (parentElement != null)\n          parentElement.appendChild(newElement)\n        return newElement\n      }\n    }        \n  <\/script>\n  <script type=\"text\/javascript\">\n      \/* Available keys:\n      centerCode: the centers code\n      centerName: the centers name\n      centerEmail: the centers email\n      centerPhone: the centers phone\n      [deprecated] centerLanguages: the centers languages (array)\n      centerAddress: the centers street & house number etc.\n      centerCityName: the centers city name\n      centerCountryCode: the centers country code (usually 'BE')\n      centerPostalCode: the centers postal code\n      centerState: the centers region ('Vlaanderen', 'Wallonie')\n      centerStateCode: the centers region code\n      centerCounty: the centers province\n      centerCountyCode: the centers province code\n      centerCommunity: the centers community\n      centerCityLatitude: the centers latitude\n      centerCityLongitude: the centers longitude\n      [deprecated] riskTaskKey: the risk task key ('AV001', 'IS005', etc.)\n      [deprecated] riskTaskLanguages: the languages this risk task is given in (array)\n      [deprecated] riskTaskNlShort: the short description for this risk in Dutch\n      [deprecated] riskTaskNlLong: the long description for this risk in Dutch\n      [deprecated] riskTaskFrShort: the short description for this risk in French\n      [deprecated] riskTaskFrLong: the long description for this risk in French\n      [deprecated] riskTaskEnShort: the short description for this risk in English\n      [deprecated] riskTaskEnLong: the long description for this risk in English\n      [new] courseCode: the course key ('AV001', 'IS005', etc.)\n      [new] courseLanguage: the language this course is given in\n      [new] courseValidFrom: when this course is valid from\n      [new] courseValidUntil: when this course is valid until\n      [new] courseNameNl: the combined course name in Dutch (short + long)\n      [new] courseNameFr: the combined course name in French (short + long)\n      [new] courseNameEn: the combined course name in English (short + long)\n      [new] courseNameNlShort: the short description for this course in Dutch\n      [new] courseNameNlLong: the long description for this course in Dutch\n      [new] courseNameFrShort: the short description for this course in French\n      [new] courseNameFrLong: the long description for this course in French\n      [new] courseNameEnShort: the short description for this course in English\n      [new] courseNameEnLong: the long description for this course in English\n    *\/\n    \/\/ table configuration block, call window.centersTableScript(tableSelector, columnConfiguration) once per table\n    window.addEventListener(\"load\",function(event) {\n      const currentPageUrlWithoutParameters = location.protocol + '\/\/' + location.host + location.pathname\n\n      \/\/ example 3 shows only the courses and the centra's they are given in\n      const tableSelector = '.example-3'\n      const columnConfiguration = [\n\n      { key: 'courseNameNlShort', label: 'Opleidingscode',showFilter: true, matchQueryParam: 'courseCode',linkFormat: `https:\/\/www.besacc-vca.be\/opleidingen-3-test\/?courseCode={courseCode}`},\n      { key: 'courseNameNlLong', label: 'Beschrijving'},\n      { key: 'courseLanguage', label: 'Taal',showFilter: true},\n      { key: 'centerName', label: 'Centrum',showFilter: true, combineDistinct: true, matchQueryParam: 'centerName',linkFormat: `https:\/\/www.besacc-vca.be\/opleidingen-3-test\/?centerName={centerName}`},\n      { key: 'courseValidFrom', label: 'Erkenning van'},\n      { key: 'courseValidUntil', label: 'Erkenning tot'}\n    \/\/  { key: 'centerCode',label: 'Centra code',show: false,matchQueryParam: 'cc',combineDistinct: true},\n    \/\/  { key: 'centerName',label: 'Centra',filterQueryParam: 'cn',linkFormat: `${currentPageUrlWithoutParameters}?cc={centerCode}`,combineDistinct: true},\n        \/\/ { key: 'centerEmail', label: 'Email'},\n        \/\/ { key: 'centerPhone', label: 'Telefoon'},\n        \/\/ { key: 'centerLanguages', label: 'Centra talen'},\n        \/\/ { key: 'centerAddress', label: 'Address'},\n        \/\/ { key: 'centerCityName', label: 'Stad', showFilter: true},\n        \/\/ { key: 'centerCountryCode', label: 'Landcode'},\n        \/\/ { key: 'centerPostalCode', label: 'Postcode'},\n        \/\/ { key: 'centerState', label: 'Deelstaat'},\n        \/\/ { key: 'centerStateCode', label: 'Deelstaat code'},\n        \/\/ { key: 'centerCounty', label: 'Provincie'},\n        \/\/ { key: 'centerCountyCode', label: 'Provincie code'},\n        \/\/ { key: 'centerCommunity', label: 'Gemeenschap'},\n        \/\/ { key: 'centerCityLatitude', label: 'Latitude'},\n        \/\/ { key: 'centerCityLongitude', label: 'Longitude'},\n        \/\/ { key: 'courseKey',label: 'Opleiding',showFilter: true},\n        \/\/ { key: 'courseLanguage',label: 'Opleiding talen',matchQueryParam: 'lang',linkFormat: `${currentPageUrlWithoutParameters}?lang={courseLanguage}`,showFilter: true,combineDistinct: true}\n        \/\/ { key: 'courseNameNlShort', label: 'Opleiding Nl Short'},\n        \/\/ { key: 'courseNameNlLong', label: 'Opleiding Nl Long'},\n        \/\/ { key: 'courseNameFrShort', label: 'Opleiding Fr Short'},\n        \/\/ { key: 'courseNameFrLong', label: 'Opleiding Fr Long'},\n        \/\/ { key: 'courseNameEnShort', label: 'Opleiding En Short'},\n        \/\/ { key: 'courseNameEnLong', label: 'Opleiding En Long'}\n      ]\n\n      window.centersTableScript(tableSelector, columnConfiguration)\n    }, false)\n  <\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b4524dc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b4524dc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bc8147a\" data-id=\"bc8147a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b092ba2 elementor-widget elementor-widget-html\" data-id=\"b092ba2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t    <div id=\"example-3\">\n      Example 3: (<a href=\"#top\">go to top<\/a>) Focus op opleidingen<br\/>\n      <div class=\"example-3\"\/>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Example 3: (go to top) Focus on training<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[28],"tags":[],"class_list":["post-1669","post","type-post","status-publish","format-standard","hentry","category-opleiding"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/posts\/1669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/comments?post=1669"}],"version-history":[{"count":72,"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/posts\/1669\/revisions"}],"predecessor-version":[{"id":2050,"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/posts\/1669\/revisions\/2050"}],"wp:attachment":[{"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/media?parent=1669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/categories?post=1669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.besacc-vca.be\/en\/wp-json\/wp\/v2\/tags?post=1669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}