{"id":2,"date":"2026-09-17T08:30:51","date_gmt":"2026-09-17T08:30:51","guid":{"rendered":"https:\/\/skate.wisedesign.nl\/?page_id=2"},"modified":"2026-09-18T11:54:38","modified_gmt":"2026-09-18T11:54:38","slug":"sample-page","status":"publish","type":"page","link":"https:\/\/skate.wisedesign.nl\/index.php\/sample-page\/","title":{"rendered":"Sample Page"},"content":{"rendered":"<style>\n.cvo-overview .cvo-filters{display:flex;flex-wrap:wrap;gap:12px;background:#ffffff;border:1px solid #e3e6ec;border-radius:10px;padding:14px 18px;margin-bottom:16px;box-shadow:0 1px 3px rgba(20,20,50,.06);z-index:30;}\n.cvo-overview .cvo-filters.cvo-filters-fixed{position:fixed;top:0;box-shadow:0 4px 14px rgba(20,20,50,.14);}\n.cvo-overview .cvo-filters-spacer{display:none;}\n.cvo-overview .cvo-count{margin:0 0 20px;font-size:14px;color:#5b6472;}\n.cvo-overview .cvo-search-wrap{position:relative;flex:1 1 240px;min-width:0;}\n.cvo-overview .cvo-search-input{width:100%;box-sizing:border-box;padding:11px 36px 11px 14px;border:1px solid #d5dae3;border-radius:6px;font-size:15px;color:#241b40;}\n.cvo-overview .cvo-search-input:focus{outline:2px solid #0b5fa5;outline-offset:1px;}\n.cvo-overview .cvo-search-input::-webkit-search-cancel-button{display:none;}\n.cvo-overview .cvo-search-clear{position:absolute;top:50%;right:8px;transform:translateY(-50%);width:24px;height:24px;border:none;background:transparent;color:#6b7280;font-size:20px;line-height:1;cursor:pointer;border-radius:50%;}\n.cvo-overview .cvo-search-clear:hover{background:#f0f5fb;color:#241b40;}\n.cvo-overview .cvo-search-spinner{position:absolute;top:50%;right:10px;width:16px;height:16px;margin-top:-8px;border:2px solid #d5dae3;border-top-color:#0b5fa5;border-radius:50%;animation:cvo-spin .6s linear infinite;}\n@keyframes cvo-spin{to{transform:rotate(360deg);}}\n.cvo-overview .cvo-select-option.is-highlighted{outline:2px solid #0b5fa5;outline-offset:-2px;}\n.cvo-overview .cvo-select{position:relative;flex:0 1 220px;}\n.cvo-overview .cvo-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:11px 14px;border:1px solid #d5dae3;border-radius:6px;background:#ffffff;color:#241b40;font-size:15px;font-family:inherit;cursor:pointer;text-align:left;}\n.cvo-overview .cvo-select-trigger:hover{border-color:#0b5fa5;}\n.cvo-overview .cvo-select-trigger:focus{outline:2px solid #0b5fa5;outline-offset:1px;}\n.cvo-overview .cvo-select-chevron{flex-shrink:0;color:#6b7280;transition:transform .15s ease;}\n.cvo-overview .cvo-select.is-open .cvo-select-chevron{transform:rotate(180deg);}\n.cvo-overview .cvo-select-menu{position:absolute;z-index:20;top:calc(100% + 6px);left:0;right:0;max-height:420px;overflow-y:auto;padding:6px;background:#ffffff;border:1px solid #e3e6ec;border-radius:10px;box-shadow:0 12px 28px rgba(20,20,50,.14);}\n.cvo-overview .cvo-select-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:6px;font-size:15px;color:#241b40;cursor:pointer;}\n.cvo-overview .cvo-select-option::after{content:'\u203a';opacity:0;color:#0b5fa5;font-weight:700;transition:opacity .1s ease;}\n.cvo-overview .cvo-select-option:hover{background:#f0f5fb;}\n.cvo-overview .cvo-select-option:hover::after{opacity:1;}\n.cvo-overview .cvo-select-option.is-active{background:#0b5fa5;color:#ffffff;font-weight:600;}\n.cvo-overview .cvo-select-option.is-active::after{opacity:1;color:#ffffff;}\n.cvo-overview .cvo-list{display:flex;flex-direction:column;gap:18px;transition:opacity .15s ease;}\n.cvo-overview .cvo-list.cvo-loading{opacity:.5;}\n.cvo-overview .cvo-empty{padding:20px 0;color:#241b40;}\n.cvo-overview .cvo-empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:56px 24px;background:#ffffff;border:1px solid #e3e6ec;border-radius:12px;}\n.cvo-overview .cvo-empty-state svg{color:#0b5fa5;background:#eaf2fb;border-radius:999px;padding:14px;box-sizing:content-box;margin-bottom:18px;}\n.cvo-overview .cvo-empty-state h3{margin:0 0 8px;font-size:18px;font-weight:700;color:#241b40;}\n.cvo-overview .cvo-empty-state p{margin:0 0 20px;font-size:15px;color:#5b6472;}\n.cvo-overview .cvo-clear-filters-btn{padding:10px 22px;background:#ffffff;color:#0b5fa5;font-weight:700;font-size:14px;border:1px solid #0b5fa5;border-radius:4px;cursor:pointer;}\n.cvo-overview .cvo-clear-filters-btn:hover{background:#eaf2fb;}\n.cvo-overview .cvo-card{display:block;background:#ffffff;border:1px solid #e3e6ec;border-radius:12px;padding:50px 32px;box-shadow:0 1px 3px rgba(20,20,50,.06);text-decoration:none;color:inherit;transition:box-shadow .15s ease,transform .15s ease;}\n.cvo-overview .cvo-card:hover{box-shadow:0 8px 20px rgba(20,20,50,.14);transform:translateY(-3px);}\n.cvo-overview .cvo-title{margin:0 0 14px;font-size:19px;font-weight:700;color:#241b40;letter-spacing:.01em;}\n.cvo-overview .cvo-excerpt{margin:0 0 20px;font-size:16px;line-height:1.6;color:#241b40;}\n.cvo-overview .cvo-btn{display:inline-block;padding:12px 26px;background:#0b5fa5;color:#ffffff !important;font-weight:700;text-decoration:none;border-radius:4px;font-size:14px;letter-spacing:.02em;}\n.cvo-overview .cvo-card:hover .cvo-btn{background:#094a84;}\n.cvo-overview .cvo-load-more-wrap{text-align:center;margin-top:28px;}\n.cvo-overview .cvo-load-more-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 32px;background:#0b5fa5;color:#ffffff;font-weight:700;font-size:14px;letter-spacing:.02em;border:none;border-radius:4px;cursor:pointer;}\n.cvo-overview .cvo-load-more-btn:hover{background:#094a84;}\n.cvo-overview .cvo-load-more-btn:disabled{opacity:.6;cursor:default;}\n<\/style>\n<script>\n(function () {\n    function cvoEmptyStateHtml() {\n        return '<div class=\"cvo-empty-state\">'\n            + '<svg width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"1.8\"\/><path d=\"M15.5 15.5L21 21\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg>'\n            + '<h3>Geen vacatures gevonden<\/h3>'\n            + '<p>Probeer een andere zoekterm of kies een andere regio.<\/p>'\n            + '<button type=\"button\" class=\"cvo-clear-filters-btn\">Wis filters<\/button>'\n            + '<\/div>';\n    }\n\n    function clearFilters(wrap) {\n        var searchInput = wrap.querySelector('.cvo-search-input');\n        if (searchInput) {\n            searchInput.value = '';\n        }\n\n        var select = wrap.querySelector('.cvo-select');\n        if (select) {\n            select.setAttribute('data-value', '');\n            select.querySelector('.cvo-select-label').textContent = 'Alle regio\\'s';\n            select.querySelectorAll('.cvo-select-option').forEach(function (opt) {\n                var isDefault = opt.getAttribute('data-value') === '';\n                opt.classList.toggle('is-active', isDefault);\n                opt.setAttribute('aria-selected', isDefault ? 'true' : 'false');\n            });\n        }\n\n        wrap.setAttribute('data-search', '');\n        wrap.setAttribute('data-region', '');\n        runQuery(wrap, true);\n    }\n\n    \/**\n     * Zet de huidige zoek\/regio-filters in de URL (?cvo_zoek=...&cvo_regio=...)\n     * zodat een gefilterd resultaat deelbaar\/bookmarkbaar is en verversen\n     * de filters onthoudt. 'replaceState' i.p.v. 'pushState': voorkomt dat\n     * elke toetsaanslag een eigen entry in de browsergeschiedenis krijgt.\n     *\/\n    function updateUrlParams(wrap) {\n        if (!window.history || !window.history.replaceState) {\n            return;\n        }\n\n        var url = new URL(window.location.href);\n        var search = wrap.getAttribute('data-search') || '';\n        var region = wrap.getAttribute('data-region') || '';\n\n        if (search !== '') {\n            url.searchParams.set('cvo_zoek', search);\n        } else {\n            url.searchParams.delete('cvo_zoek');\n        }\n\n        if (region !== '') {\n            url.searchParams.set('cvo_regio', region);\n        } else {\n            url.searchParams.delete('cvo_regio');\n        }\n\n        window.history.replaceState(null, '', url.toString());\n    }\n\n    function runQuery(wrap, replace) {\n        var list = wrap.querySelector('.cvo-list');\n        var loadMoreWrap = wrap.querySelector('.cvo-load-more-wrap');\n        var offset = replace ? 0 : parseInt(wrap.getAttribute('data-offset'), 10);\n\n        if (replace) {\n            list.classList.add('cvo-loading');\n            updateUrlParams(wrap);\n        }\n\n        var body = new FormData();\n        body.append('action', 'cvo_load_more');\n        body.append('nonce', '6da0c83a3e');\n        body.append('offset', offset);\n        body.append('taxonomy', wrap.getAttribute('data-taxonomy'));\n        body.append('term', wrap.getAttribute('data-term'));\n        body.append('search', wrap.getAttribute('data-search') || '');\n        body.append('region', wrap.getAttribute('data-region') || '');\n        body.append('isFilter', replace ? '1' : '');\n\n        return fetch('https:\/\/skate.wisedesign.nl\/wp-admin\/admin-ajax.php', { method: 'POST', body: body })\n            .then(function (r) { return r.json(); })\n            .then(function (json) {\n                list.classList.remove('cvo-loading');\n\n                if (!json.success) {\n                    return;\n                }\n\n                if (replace) {\n                    list.innerHTML = json.data.html || cvoEmptyStateHtml();\n                } else {\n                    list.insertAdjacentHTML('beforeend', json.data.html);\n                }\n\n                wrap.setAttribute('data-offset', String(json.data.nextOffset));\n\n                if (loadMoreWrap) {\n                    loadMoreWrap.hidden = !json.data.hasMore;\n                }\n\n                if (replace) {\n                    var countEl = wrap.querySelector('.cvo-count');\n                    var hasFilter = (wrap.getAttribute('data-search') || '') !== '' || (wrap.getAttribute('data-region') || '') !== '';\n                    if (countEl) {\n                        if (hasFilter && json.data.count) {\n                            countEl.textContent = json.data.count;\n                            countEl.hidden = false;\n                        } else {\n                            countEl.hidden = true;\n                        }\n                    }\n                }\n            })\n            .catch(function () {\n                list.classList.remove('cvo-loading');\n            });\n    }\n\n    function debounce(fn, wait) {\n        var timer = null;\n        return function () {\n            var args = arguments;\n            clearTimeout(timer);\n            timer = setTimeout(function () { fn.apply(null, args); }, wait);\n        };\n    }\n\n    \/**\n     * Sticky filterbalk via 'position: fixed' + handmatige boundary-check\n     * i.p.v. CSS 'position: sticky' \u2014 die laatste breekt zodra een\n     * omliggend (vaak page builder-)element 'overflow: hidden\/auto\/scroll'\n     * heeft, wat op WordPress-pagina's regelmatig voorkomt. Deze aanpak is\n     * daar niet gevoelig voor, omdat 'fixed' altijd t.o.v. de viewport\n     * positioneert. De spacer voorkomt dat de pagina springt zodra de\n     * balk uit de normale flow wordt gehaald.\n     *\/\n    function initStickyFilters() {\n        document.querySelectorAll('.cvo-overview .cvo-filters').forEach(function (filters) {\n            if (filters.dataset.stickyInit) {\n                return;\n            }\n            filters.dataset.stickyInit = '1';\n\n            var spacer = document.createElement('div');\n            spacer.className = 'cvo-filters-spacer';\n            filters.insertAdjacentElement('afterend', spacer);\n\n            function activate() {\n                var rect = filters.getBoundingClientRect();\n                filters.style.left = rect.left + 'px';\n                filters.style.width = rect.width + 'px';\n                spacer.style.height = rect.height + 'px';\n                filters.classList.add('cvo-filters-fixed');\n                spacer.style.display = 'block';\n            }\n\n            function deactivate() {\n                filters.classList.remove('cvo-filters-fixed');\n                filters.style.left = '';\n                filters.style.width = '';\n                spacer.style.display = 'none';\n            }\n\n            var offsetTop = filters.getBoundingClientRect().top + window.pageYOffset;\n\n            \/\/ Meet de natuurlijke documentpositie opnieuw op resize. Als de\n            \/\/ balk op dat moment al vastzit, tijdelijk lostrekken om de\n            \/\/ \u00e9chte positie te kunnen meten (anders meet je de vaste 'top:0'\n            \/\/ i.p.v. de werkelijke plek in de pagina) en daarna herstellen.\n            function remeasure() {\n                var wasFixed = filters.classList.contains('cvo-filters-fixed');\n                if (wasFixed) {\n                    deactivate();\n                }\n                offsetTop = filters.getBoundingClientRect().top + window.pageYOffset;\n                if (wasFixed) {\n                    activate();\n                }\n            }\n\n            function update() {\n                if (window.pageYOffset >= offsetTop) {\n                    if (!filters.classList.contains('cvo-filters-fixed')) {\n                        activate();\n                    }\n                } else if (filters.classList.contains('cvo-filters-fixed')) {\n                    deactivate();\n                }\n            }\n\n            window.addEventListener('scroll', update, { passive: true });\n            window.addEventListener('resize', function () {\n                remeasure();\n                update();\n            });\n            update();\n        });\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initStickyFilters);\n    } else {\n        initStickyFilters();\n    }\n\n    \/\/ Laat de spinner draaien vanaf het typen tot het resultaat binnen is\n    \/\/ (dus ook tijdens de 400ms debounce-wachttijd) \u2014 geeft meteen feedback\n    \/\/ dat er iets gaat gebeuren, i.p.v. pas zodra het netwerkverzoek start.\n    var debouncedSearch = debounce(function (wrap) {\n        runQuery(wrap, true).then(function () {\n            var clearBtn = wrap.querySelector('.cvo-search-clear');\n            var spinner = wrap.querySelector('.cvo-search-spinner');\n            if (spinner) {\n                spinner.hidden = true;\n            }\n            if (clearBtn) {\n                clearBtn.hidden = wrap.getAttribute('data-search') === '';\n            }\n        });\n    }, 400);\n\n    document.addEventListener('input', function (e) {\n        if (!e.target.matches('.cvo-search-input')) {\n            return;\n        }\n        var wrap = e.target.closest('.cvo-overview');\n        var clearBtn = wrap.querySelector('.cvo-search-clear');\n        var spinner = wrap.querySelector('.cvo-search-spinner');\n        var hasValue = e.target.value !== '';\n\n        if (clearBtn) {\n            clearBtn.hidden = true;\n        }\n        if (spinner) {\n            spinner.hidden = !hasValue;\n        }\n\n        wrap.setAttribute('data-search', e.target.value);\n        debouncedSearch(wrap);\n    });\n\n    document.addEventListener('click', function (e) {\n        var clearSearchBtn = e.target.closest('.cvo-search-clear');\n        if (!clearSearchBtn) {\n            return;\n        }\n        var wrap = clearSearchBtn.closest('.cvo-overview');\n        var searchInput = wrap.querySelector('.cvo-search-input');\n        searchInput.value = '';\n        clearSearchBtn.hidden = true;\n        wrap.setAttribute('data-search', '');\n        runQuery(wrap, true);\n        searchInput.focus();\n    });\n\n    function closeSelect(select) {\n        select.classList.remove('is-open');\n        select.querySelector('.cvo-select-trigger').setAttribute('aria-expanded', 'false');\n        select.querySelector('.cvo-select-menu').hidden = true;\n    }\n\n    function highlightOption(select, optionEl) {\n        if (!optionEl) {\n            return;\n        }\n        select.querySelectorAll('.cvo-select-option').forEach(function (opt) {\n            opt.classList.remove('is-highlighted');\n        });\n        optionEl.classList.add('is-highlighted');\n        optionEl.scrollIntoView({ block: 'nearest' });\n        select.querySelector('.cvo-select-trigger').setAttribute('aria-activedescendant', optionEl.id);\n    }\n\n    document.addEventListener('click', function (e) {\n        var trigger = e.target.closest('.cvo-select-trigger');\n        var option = e.target.closest('.cvo-select-option');\n        var openSelect = document.querySelector('.cvo-select.is-open');\n\n        if (trigger) {\n            var select = trigger.closest('.cvo-select');\n            var isOpen = select.classList.contains('is-open');\n\n            if (openSelect && openSelect !== select) {\n                closeSelect(openSelect);\n            }\n\n            select.classList.toggle('is-open', !isOpen);\n            trigger.setAttribute('aria-expanded', String(!isOpen));\n            select.querySelector('.cvo-select-menu').hidden = isOpen;\n\n            if (!isOpen) {\n                highlightOption(select, select.querySelector('.cvo-select-option.is-active') || select.querySelector('.cvo-select-option'));\n            }\n            return;\n        }\n\n        if (option) {\n            var optSelect = option.closest('.cvo-select');\n            var wrap = optSelect.closest('.cvo-overview');\n            var value = option.getAttribute('data-value');\n\n            optSelect.querySelectorAll('.cvo-select-option').forEach(function (opt) {\n                opt.classList.toggle('is-active', opt === option);\n                opt.setAttribute('aria-selected', opt === option ? 'true' : 'false');\n            });\n            optSelect.setAttribute('data-value', value);\n            optSelect.querySelector('.cvo-select-label').textContent = option.textContent;\n            closeSelect(optSelect);\n\n            wrap.setAttribute('data-region', value);\n            runQuery(wrap, true);\n            return;\n        }\n\n        if (openSelect && !openSelect.contains(e.target)) {\n            closeSelect(openSelect);\n        }\n    });\n\n    document.addEventListener('keydown', function (e) {\n        if (e.key === 'Escape') {\n            var openSelect = document.querySelector('.cvo-select.is-open');\n            if (openSelect) {\n                closeSelect(openSelect);\n            }\n            return;\n        }\n\n        var trigger = e.target.closest('.cvo-select-trigger');\n        if (!trigger) {\n            return;\n        }\n        var select = trigger.closest('.cvo-select');\n        var menu = select.querySelector('.cvo-select-menu');\n\n        if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n            e.preventDefault();\n\n            if (menu.hidden) {\n                trigger.click();\n                return;\n            }\n\n            var options = Array.prototype.slice.call(select.querySelectorAll('.cvo-select-option'));\n            var current = select.querySelector('.cvo-select-option.is-highlighted') || select.querySelector('.cvo-select-option.is-active');\n            var idx = options.indexOf(current);\n\n            idx = e.key === 'ArrowDown'\n                ? (idx < options.length - 1 ? idx + 1 : 0)\n                : (idx > 0 ? idx - 1 : options.length - 1);\n\n            highlightOption(select, options[idx]);\n            return;\n        }\n\n        if (e.key === 'Enter' && !menu.hidden) {\n            e.preventDefault();\n            var highlighted = select.querySelector('.cvo-select-option.is-highlighted');\n            if (highlighted) {\n                highlighted.click();\n            }\n        }\n    });\n\n    document.addEventListener('click', function (e) {\n        var btn = e.target.closest('.cvo-load-more-btn');\n        if (!btn) {\n            return;\n        }\n\n        var wrap = btn.closest('.cvo-overview');\n\n        btn.disabled = true;\n        btn.textContent = btn.getAttribute('data-loading');\n\n        runQuery(wrap, false).then(function () {\n            btn.disabled = false;\n            btn.textContent = btn.getAttribute('data-label');\n        });\n    });\n\n    document.addEventListener('click', function (e) {\n        var clearBtn = e.target.closest('.cvo-clear-filters-btn');\n        if (!clearBtn) {\n            return;\n        }\n        clearFilters(clearBtn.closest('.cvo-overview'));\n    });\n})();\n<\/script><div class=\"cvo-overview\" data-offset=\"10\" data-taxonomy=\"category\" data-term=\"publications\" data-search=\"\" data-region=\"\"><div class=\"cvo-filters\"><div class=\"cvo-search-wrap\"><input type=\"search\" class=\"cvo-search-input\" placeholder=\"Zoek vacatures\" aria-label=\"Zoek vacatures\" value=\"\" \/><span class=\"cvo-search-spinner\" hidden><\/span><button type=\"button\" class=\"cvo-search-clear\" aria-label=\"Zoekterm wissen\" hidden>&times;<\/button><\/div><div class=\"cvo-select\" data-value=\"\"><button type=\"button\" class=\"cvo-select-trigger\" aria-haspopup=\"listbox\" aria-expanded=\"false\"><span class=\"cvo-select-label\">Alle regio&#039;s<\/span><svg class=\"cvo-select-chevron\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\" aria-hidden=\"true\"><path d=\"M1 1L6 6L11 1\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button><div class=\"cvo-select-menu\" role=\"listbox\" hidden><div class=\"cvo-select-option is-active\" id=\"cvo-region-opt-alle\" role=\"option\" aria-selected=\"true\" data-value=\"\">Alle regio's<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-flevoland\" role=\"option\" aria-selected=\"false\" data-value=\"flevoland\">Flevoland<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-gelderland\" role=\"option\" aria-selected=\"false\" data-value=\"gelderland\">Gelderland<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-limburg\" role=\"option\" aria-selected=\"false\" data-value=\"limburg\">Limburg<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-noord-brabant\" role=\"option\" aria-selected=\"false\" data-value=\"noord-brabant\">Noord Brabant<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-noord-holland\" role=\"option\" aria-selected=\"false\" data-value=\"noord-holland\">Noord Holland<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-overijssel\" role=\"option\" aria-selected=\"false\" data-value=\"overijssel\">Overijssel<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-utrecht\" role=\"option\" aria-selected=\"false\" data-value=\"utrecht\">Utrecht<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-zeeland\" role=\"option\" aria-selected=\"false\" data-value=\"zeeland\">Zeeland<\/div><div class=\"cvo-select-option\" id=\"cvo-region-opt-zuid-holland\" role=\"option\" aria-selected=\"false\" data-value=\"zuid-holland\">Zuid Holland<\/div><\/div><\/div><\/div><p class=\"cvo-count\" hidden><\/p><div class=\"cvo-list\"><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/09\/07\/11506-projectleider-civiele-techniek-regio-eindhoven-e-2900-e-4740\/\"><h3 class=\"cvo-title\">11506 | Projectleider Civiele Techniek | regio Eindhoven| \u20ac 2900 &#8211; \u20ac 4740 | &#8211; Eindhoven<\/h3><p class=\"cvo-excerpt\">Introduction Ben jij een projectleider die graag werkt aan projecten die zichtbaar impact maken op de leefomgeving? Krijg jij energie van het aansturen van civieltechnische projecten &eacute;n het samenwerken met verschillende partijen? Dan is dit een mooie kans om jouw\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/10\/16\/11286-senior-werkvoorbereider-gww-ook-zzp-mogelijk-regio-utrecht-e-5500-e-6500\/\"><h3 class=\"cvo-title\">11286 | Senior Werkvoorbereider GWW (ook zzp mogelijk) | regio Utrecht |\u20ac 5500 &#8211; \u20ac 6500 | &#8211; Utrecht<\/h3><p class=\"cvo-excerpt\">Introduction Ben jij een ervaren werkvoorbereider met een passie voor grond-, weg- en waterbouw? Vind je het leuk om overzicht te houden, te schakelen met verschillende partijen en technisch inhoudelijk bij te dragen aan uitdagende projecten? Dan hebben wij een\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/09\/07\/10866-werkvoorbereider-dagelijks-mutatie-onderhoud-woningen-regio-almere-e-4500-e-5500\/\"><h3 class=\"cvo-title\">10866 | Werkvoorbereider Dagelijks Mutatie Onderhoud Woningen | regio Almere | \u20ac 4500 &#8211; \u20ac 5500 | &#8211; Almere<\/h3><p class=\"cvo-excerpt\">Introduction Wij zijn op zoek naar een enthousiaste Werkvoorbereider voor dagelijks mutatie onderhoud van woningen. In deze functie ben je verantwoordelijk voor het organiseren en voorbereiden van dagelijkse mutatie- onderhoudswerkzaamheden in woningen. Hierbij zorg je ervoor dat de werkzaamheden op\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/10\/13\/11613-equipment-tester-regio-den-haag-bruto-tot-e-4200\/\"><h3 class=\"cvo-title\">11613 | Equipment tester | regio Den Haag | bruto tot \u20ac 4200 | &#8211; Den Haag<\/h3><p class=\"cvo-excerpt\">Introduction Onze opdrachtgever is een bekend renovatie- en onderhoudsbedrijf maar zijn ook actief in de nieuwbouw.&nbsp; Op de afdeling materieelbeheer werken een kleine 20 collega&#8217;s.&nbsp; Onze opdrachtgever wil&nbsp; graag in contact komen met een Equipment tester.&nbsp; Dankzij jouw kennis van\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/07\/23\/11566-werkvoorbereider-dagelijks-mutatieonderhoud-regio-amsterdam-regio-delft-tot-e-5-000\/\"><h3 class=\"cvo-title\">11566 | Werkvoorbereider dagelijks mutatieonderhoud | regio Amsterdam | regio Delft | tot \u20ac 5.000,- &#8211; Amsterdam Delft<\/h3><p class=\"cvo-excerpt\">Introduction Als werkvoorbereider dagelijks mutatieonderhoud organiseer je het proces rond reparaties en mutaties aan huurwoningen in de Randstad. Je combineert technische kennis met planning en zorgt voor duidelijke communicatie met alle betrokkenen. Organization Je werkt bij een organisatie die zich\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/10\/02\/10868-bewonerscoordinator-regio-amsterdam-regio-utrecht-e-3500-e-3850\/\"><h3 class=\"cvo-title\">10868 | Bewonersco\u00f6rdinator | regio Amsterdam | regio Utrecht | \u20ac 3500 &#8211; \u20ac 3850 | &#8211; Amsterdam<\/h3><p class=\"cvo-excerpt\">Introduction Wij zijn op zoek naar een enthousiaste Bewonersco&ouml;rdinator voor onderhouds- en renovatieprojecten in woningen. In deze functie ben je verantwoordelijk voor het onderhouden van contact met bewoners en het co&ouml;rdineren van de werkzaamheden in hun woning. Hierbij zorg je\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/09\/07\/11464-planontwikkelaar-werkvoorbereider-onderhoud-en-verduurzaming-regio-almere-e-4500-e-6900\/\"><h3 class=\"cvo-title\">11464 | Planontwikkelaar &amp; Werkvoorbereider Onderhoud en Verduurzaming | regio Almere | \u20ac 4500 &#8211; \u20ac 6900 | &#8211; Almere<\/h3><p class=\"cvo-excerpt\">Introduction Ben jij de technische alleskunner die plannen omzet in succesvolle projecten?Voor een vooruitstrevende en betrokken organisatie zoeken wij een Planontwikkelaar &amp; Werkvoorbereider Onderhoud en Verduurzaming die bouwkundige kennis combineert met organisatorisch talent. Betreft een direct dienstverband bij onze opdrachtgever\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/09\/17\/11385-commercieel-technisch-beheerder-vastgoed-regio-hilversum-e4000-e-5000\/\"><h3 class=\"cvo-title\">11385 | Commercieel &amp; Technisch Beheerder Vastgoed | regio Hilversum | \u20ac4000 &#8211; \u20ac 5000 &#8211; Hilversum<\/h3><p class=\"cvo-excerpt\">Introduction Ben jij een allround vastgoedprofessional met technisch inzicht &eacute;n commercieel gevoel? Dan zoeken wij jou voor een toonaangevende vastgoedportefeuille met woningen, winkels en bedrijfspanden. In deze veelzijdige rol ben je h&eacute;t aanspreekpunt voor commercieel &eacute;n technisch beheer. Organization De\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/10\/14\/11572-coordinator-bouw-bouwlogistiek-regio-utrecht-e-3-200-tot-e-7-800\/\"><h3 class=\"cvo-title\">11572 | Co\u00f6rdinator bouw \/ Bouwlogistiek | regio Utrecht | \u20ac 3.200 tot \u20ac 7.800 | &#8211; Utrecht<\/h3><p class=\"cvo-excerpt\">Introduction In deze rol verbind jij de tekentafel met de bouwplaats. Je combineert bouwlogistiek, planning, kosten en 4D BIM en adviseert ontwerp- en projectteams over uitvoerbaarheid, veiligheid en kostenbeheersing. Je werkt aan uiteenlopende, vaak innovatieve projecten en krijgt de ruimte\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><a class=\"cvo-card\" href=\"https:\/\/skate.wisedesign.nl\/index.php\/2026\/09\/17\/11270-inspecteur-nen-2767-regio-utrecht-e3-300-e4-900-geen-detachering\/\"><h3 class=\"cvo-title\">11270 | Inspecteur NEN 2767 | regio Utrecht| \u20ac3.300 \u2013 \u20ac4.900 (geen detachering) &#8211; Utrecht<\/h3><p class=\"cvo-excerpt\">Introduction Als bouwkundig inspecteur werk jij dagelijks aan professioneel vastgoedbeheer in Midden-Nederland. Je bezoekt uiteenlopende gebouwen, voert NEN 2767-conditiemetingen uit en vertaalt jouw observaties naar heldere onderhoudsadviezen en meerjarenonderhoudsplannen. In deze functie combineer je bouwkunde, data-analyse en contact met opdrachtgevers\u2026<\/p><span class=\"cvo-btn\">Bekijk vacature<\/span><\/a><\/div><div class=\"cvo-load-more-wrap\"><button type=\"button\" class=\"cvo-load-more-btn\" data-label=\"Bekijk meer vacatures\" data-loading=\"Laden\u2026\">Bekijk meer vacatures <span aria-hidden=\"true\">&raquo;&raquo;<\/span><\/button><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":2,"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":221,"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions\/221"}],"wp:attachment":[{"href":"https:\/\/skate.wisedesign.nl\/index.php\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}