{"id":85065,"date":"2025-01-01T20:38:23","date_gmt":"2025-01-01T18:38:23","guid":{"rendered":"https:\/\/centcols.org\/?p=85065"},"modified":"2025-07-29T11:31:57","modified_gmt":"2025-07-29T09:31:57","slug":"testlus","status":"publish","type":"post","link":"https:\/\/centcols.org\/nl\/test-loop\/","title":{"rendered":"Testlus"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull\" style=\"min-height:250px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" class=\"wp-block-cover__image-background wp-image-84103 size-full\" alt=\"\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/M01226_2.jpg\" data-object-fit=\"cover\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/M01226_2.jpg 800w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/M01226_2-768x576.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-black-background-color has-background-dim-20 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h1 class=\"wp-block-heading has-text-align-center\" style=\"font-size:2.5rem\">Rejoindre le Club des Cent Cols<\/h1>\n<\/div><\/div>\n\n\n\n<p>Le Club des Cent Cols rassemble des passionn\u00e9\u00b7es de montagne, de libert\u00e9 et d&rsquo;aventure \u00e0 v\u00e9lo. Plus qu&rsquo;une liste de cols, c&rsquo;est un \u00e9tat d&rsquo;esprit ! Sur cette page, retrouvez toutes les informations pour nous rejoindre.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Le Club c\u2019est\u2026<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Une association de passionn\u00e9s de <strong>v\u00e9lo en montagne<\/strong>, fond\u00e9e en 1972, qui rassemble des cyclistes du monde entier unis par l&rsquo;amour des ascensions \u00e0 v\u00e9lo.<\/li>\n\n\n\n<li>Une philosophie tourn\u00e9e vers la d\u00e9couverte, la conqu\u00eate des cols mythiques ou moins connus et l\u2019exploration des vall\u00e9es riches d\u2019histoire et de culture.<\/li>\n\n\n\n<li>Un d\u00e9fi personnel consistant \u00e0 franchir \u00e0 bicyclette au moins cent cols diff\u00e9rents, dont cinq \u00e0 plus de 2000 m\u00e8tres d&rsquo;altitude, pour devenir membre de la confr\u00e9rie.<\/li>\n\n\n\n<li>Une diversit\u00e9 de pratiques cyclistes : v\u00e9lo de route, gravel, VTT, tandem ou handbike, tant que l\u2019effort est fourni par la seule force musculaire.<\/li>\n\n\n\n<li>Une communaut\u00e9 qui valorise la simplicit\u00e9, l&rsquo;amiti\u00e9, le partage d&rsquo;une passion commune et l&rsquo;\u00e9change d&rsquo;informations sur les itin\u00e9raires et les cols \u00e0 d\u00e9couvrir.<\/li>\n\n\n\n<li>Un acc\u00e8s \u00e0 des ressources telles que des catalogues de cols, des randonn\u00e9es permanentes, des brevets et des challenges pour enrichir votre exp\u00e9rience du cyclotourisme en montagne.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">\u2026 et ce que le Club n\u2019est pas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un club r\u00e9serv\u00e9 \u00e0 une \u00e9lite de cyclistes ; il est ouvert \u00e0 tous ceux qui partagent l&rsquo;amour du v\u00e9lo en montagne et souhaitent relever le d\u00e9fi des cent cols.<\/li>\n\n\n\n<li>Une comp\u00e9tition : ici, pas de chronom\u00e8tres ni de records \u00e0 battre. L\u2019accent est mis sur le plaisir de la d\u00e9couverte et le d\u00e9passement personnel et non sur la performance sportive.<\/li>\n\n\n\n<li>Une activit\u00e9 r\u00e9serv\u00e9e aux seuls initi\u00e9s : le club est ouvert \u00e0 tous les amateurs de v\u00e9lo, quels que soient leur \u00e2ge ou leur niveau.<\/li>\n\n\n\n<li>Une simple collection : franchir un col, c\u2019est aussi d\u00e9couvrir des panoramas uniques, partager des moments conviviaux et s\u2019immerger dans la richesse culturelle des r\u00e9gions travers\u00e9es.<\/li>\n\n\n\n<li>Une structure rigide imposant des parcours sp\u00e9cifiques ; chaque membre est libre de choisir ses itin\u00e9raires et les cols qu&rsquo;il souhaite gravir, dans le respect de la \u00ab\u00a0R\u00e8gle du jeu\u00a0\u00bb.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/centcols.org\/formulaire-dinscription\/\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/formulaire2.jpg\" alt=\"\" class=\"wp-image-83221\" style=\"aspect-ratio:16\/9;object-fit:cover;width:800px\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/formulaire2.jpg 1200w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/formulaire2-768x432.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/centcols.org\/formulaire-dinscription\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>formulaire inscription<\/strong><\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">\u00c0 savoir<\/h2>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n  <div id=\"no-loop-1\" class=\"loop-articles\">\n    <div class=\"row\">\n      \n      \n            <div class=\"col-lg-12\">\n                          <div class=\"row articles-list loading-articles\">\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"a-savoir-rejoindre\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/comment-faire\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"1750\" height=\"1313\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/rassemblements-sejours-velo-club-cent-cols.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/rassemblements-sejours-velo-club-cent-cols.jpg 1750w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/rassemblements-sejours-velo-club-cent-cols-1200x900.jpg 1200w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/rassemblements-sejours-velo-club-cent-cols-768x576.jpg 768w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/rassemblements-sejours-velo-club-cent-cols-1536x1152.jpg 1536w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/rassemblements-sejours-velo-club-cent-cols-600x450.jpg 600w\" sizes=\"auto, (max-width: 1750px) 100vw, 1750px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>\u00c0 savoir<\/p>\n                      <\/div>\n                      <h3>Comment faire ?<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"a-savoir-rejoindre\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/faciliter-la-saisie-des-cols-pour-les-futurs-adherents\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"221\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/Image5.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>\u00c0 savoir<\/p>\n                      <\/div>\n                      <h3>Faciliter la saisie des cols pour les futurs adh\u00e9rents<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"a-savoir-rejoindre\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/regle-du-jeu\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png 1536w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3-1200x800.png 1200w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3-768x512.png 768w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>\u00c0 savoir<\/p>\n                      <\/div>\n                      <h3>R\u00e8gle du jeu<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"a-savoir-rejoindre adhesion\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/moyens-paiement\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"491\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/moyenspaiements.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/moyenspaiements.jpg 900w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/moyenspaiements-768x419.jpg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>\u00c0 savoir<\/p>\n                      <\/div>\n                      <h3>Comment effectuer son r\u00e8glement au Club des Cent Cols ?<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"a-savoir-rejoindre faq\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/faq-les-cols\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faqcols.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faqcols.jpg 800w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faqcols-768x432.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>FAQ<\/p>\n                      <\/div>\n                      <h3>FAQ &#8211; Les cols<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"a-savoir-rejoindre faq\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/faq-le-club\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faq.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faq.jpg 1600w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faq-1200x675.jpg 1200w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faq-768x432.jpg 768w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/faq-1536x864.jpg 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>FAQ<\/p>\n                      <\/div>\n                      <h3>FAQ \u2013 Le Club<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                      <\/div>\n\n          \n        \n\n      <\/div>\n          <\/div>\n  <\/div>\n  <script>\n    (function() {\n      const container = document.getElementById('no-loop-1');\n      if (!container) return;\n      const checkboxes = container.querySelectorAll('.filter-checkbox');\n      const dropdowns = container.querySelectorAll('.filter-dropdown');\n      const buttons = container.querySelectorAll('.filter-button');\n      const articles = container.querySelectorAll('.article-item');\n      const filterContainer = container.querySelector('.category-hierarchy-sidebar');\n      const articlesContainer = container.querySelector('.articles-list');\n\n      \/\/ \u00c9l\u00e9ments de pagination\n      const prevButton = container.querySelector('.pagination-prev');\n      const nextButton = container.querySelector('.pagination-next');\n      const currentPageSpan = container.querySelector('.current-page');\n      const totalPagesSpan = container.querySelector('.total-pages');\n\n      \/\/ Variables de pagination\n      let currentPage = 1;\n      let totalPages = parseInt(totalPagesSpan?.textContent || '1', 10);\n      const postsPerPage = 15;\n\n      \/\/ Fonction de gestion de la pagination\n      function handlePagination() {\n        if (!prevButton || !nextButton) return;\n\n        prevButton.addEventListener('click', () => {\n          if (currentPage > 1) {\n            currentPage--;\n            updatePagination();\n            scrollToTop();\n          }\n        });\n\n        nextButton.addEventListener('click', () => {\n          if (currentPage < totalPages) {\n            currentPage++;\n            updatePagination();\n            scrollToTop();\n          }\n        });\n\n        \/\/ Initialise l'\u00e9tat des boutons\n        updatePaginationButtons();\n      }\n\n      function updatePagination() {\n        \/\/ Mise \u00e0 jour des boutons\n        updatePaginationButtons();\n\n        \/\/ Mise \u00e0 jour du num\u00e9ro de page affich\u00e9\n        if (currentPageSpan) {\n          currentPageSpan.textContent = currentPage;\n        }\n\n        \/\/ Filtre les articles \u00e0 afficher selon la page actuelle\n        filterArticles();\n      }\n\n      function updatePaginationButtons() {\n        if (prevButton) {\n          prevButton.disabled = currentPage === 1;\n        }\n        if (nextButton) {\n          nextButton.disabled = currentPage === totalPages;\n        }\n      }\n\n      function scrollToTop() {\n        \/\/ Scroll vers le haut de la liste des articles\n        const scrollToElement = articlesContainer || container.querySelector('.loop-articles');\n        if (scrollToElement) {\n          scrollToElement.scrollIntoView({\n            behavior: 'smooth',\n            block: 'start'\n          });\n        }\n      }\n\n      \/\/ Gestion de la popup de description\n      const openPopupBtn = container.querySelector('.open-description-popup');\n      const popupOverlay = container.querySelector('.description-popup-overlay');\n      const closePopupBtn = container.querySelector('.close-popup');\n\n      if (openPopupBtn && popupOverlay) {\n        openPopupBtn.addEventListener('click', function() {\n          popupOverlay.style.display = 'flex';\n          document.body.style.overflow = 'hidden'; \/\/ Emp\u00eacher le d\u00e9filement\n        });\n      }\n\n      if (closePopupBtn && popupOverlay) {\n        closePopupBtn.addEventListener('click', function() {\n          popupOverlay.style.display = 'none';\n          document.body.style.overflow = ''; \/\/ R\u00e9activer le d\u00e9filement\n        });\n\n        \/\/ Fermer en cliquant en dehors du contenu\n        popupOverlay.addEventListener('click', function(e) {\n          if (e.target === popupOverlay) {\n            popupOverlay.style.display = 'none';\n            document.body.style.overflow = '';\n          }\n        });\n\n        \/\/ Fermer avec Echap\n        document.addEventListener('keydown', function(e) {\n          if (e.key === 'Escape' && popupOverlay.style.display === 'flex') {\n            popupOverlay.style.display = 'none';\n            document.body.style.overflow = '';\n          }\n        });\n      }\n\n      \/\/ Variable pour suivre si l'initialisation est termin\u00e9e\n      let initialized = false;\n\n      \/\/ Gestion du toggle mobile pour les filtres\n      const filterToggle = container.querySelector('.filter-toggle');\n      const categoryButtons = container.querySelector('.category-buttons');\n\n      if (filterToggle && categoryButtons) {\n        filterToggle.addEventListener('click', function() {\n          const isExpanded = filterToggle.getAttribute('aria-expanded') === 'true';\n          const toggleText = filterToggle.querySelector('.toggle-text');\n          const toggleIcon = filterToggle.querySelector('.toggle-icon');\n\n          if (isExpanded) {\n            \/\/ Fermer\n            categoryButtons.style.display = 'none';\n            filterToggle.setAttribute('aria-expanded', 'false');\n            toggleText.textContent = 'Afficher les filtres';\n            toggleIcon.textContent = '\u25bc';\n            filterToggle.classList.remove('expanded');\n          } else {\n            \/\/ Ouvrir\n            categoryButtons.style.display = 'flex';\n            filterToggle.setAttribute('aria-expanded', 'true');\n            toggleText.textContent = 'Masquer les filtres';\n            toggleIcon.textContent = '\u25b2';\n            filterToggle.classList.add('expanded');\n          }\n        });\n      }\n\n      \/\/ Stocker les options originales de chaque liste d\u00e9roulante pour pouvoir les restaurer\n      const originalOptions = {};\n\n      \/\/ Sauvegarder les options originales de toutes les listes d\u00e9roulantes\n      dropdowns.forEach(dropdown => {\n        const options = Array.from(dropdown.options).map(opt => ({\n          value: opt.value,\n          text: opt.text,\n          disabled: opt.disabled\n        }));\n        originalOptions[dropdown.dataset.group] = options;\n      });\n\n      \/\/ Gestion des boutons (layout=\"buttons\")\n      buttons.forEach(button => {\n        button.addEventListener('click', () => {\n          const cat = button.dataset.category;\n\n          \/\/ Si le bouton est d\u00e9j\u00e0 actif\n          if (button.classList.contains('active')) {\n            \/\/ Compter combien de boutons sont actifs\n            const activeCount = container.querySelectorAll('.filter-button.active').length;\n            \/\/ Si c'est le seul bouton actif, ne rien faire (emp\u00eacher la d\u00e9sactivation)\n            if (activeCount === 1) {\n              return;\n            }\n            \/\/ Sinon, on peut le d\u00e9sactiver normalement\n            button.classList.remove('active');\n          } else {\n            \/\/ D\u00e9sactiver tous les boutons\n            buttons.forEach(btn => btn.classList.remove('active'));\n            \/\/ Activer uniquement le bouton cliqu\u00e9\n            button.classList.add('active');\n          }\n\n          \/\/ R\u00e9initialiser la pagination \u00e0 la premi\u00e8re page lors du changement de filtre\n          currentPage = 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = '1';\n          }\n\n          filterArticles();\n          updateAvailableFilters();\n          updateUrl();\n        });\n      });\n\n      \/\/ Gestion des checkboxes (layout=\"filters\")\n      checkboxes.forEach(function(checkbox) {\n        checkbox.addEventListener('change', () => {\n          \/\/ R\u00e9initialiser la pagination \u00e0 la premi\u00e8re page lors du changement de filtre\n          currentPage = 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = '1';\n          }\n\n          filterArticles();\n          updateAvailableFilters();\n          updateUrl();\n        });\n      });\n\n      \/\/ Gestion des listes d\u00e9roulantes (nouveau)\n      dropdowns.forEach(function(dropdown) {\n        dropdown.addEventListener('change', () => {\n          \/\/ R\u00e9initialiser la pagination \u00e0 la premi\u00e8re page lors du changement de filtre\n          currentPage = 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = '1';\n          }\n\n          filterArticles();\n          updateAvailableFilters();\n          updateUrl();\n        });\n      });\n\n      \/\/ Fonction principale qui filtre les articles en fonction des filtres actifs\n      function filterArticles() {\n        const groupFilters = {}; \/\/ Structure qui stocke les filtres actifs regroup\u00e9s par \"groupe\"\n        let anyFilterActive = false; \/\/ Pour savoir si au moins un filtre est actif\n\n        \/\/ R\u00e9cup\u00e9ration des checkboxes coch\u00e9es\n        checkboxes.forEach(cb => {\n          if (cb.checked) {\n            anyFilterActive = true;\n            const group = cb.dataset.group;\n            if (!groupFilters[group]) groupFilters[group] = new Set();\n            groupFilters[group].add(cb.dataset.category);\n          }\n        });\n\n        \/\/ R\u00e9cup\u00e9ration des valeurs de listes d\u00e9roulantes s\u00e9lectionn\u00e9es\n        dropdowns.forEach(dropdown => {\n          if (dropdown.value) {\n            anyFilterActive = true;\n            const group = dropdown.dataset.group;\n            if (!groupFilters[group]) groupFilters[group] = new Set();\n            groupFilters[group].add(dropdown.value);\n          }\n        });\n\n        \/\/ R\u00e9cup\u00e9ration des boutons actifs\n        buttons.forEach(btn => {\n          if (btn.classList.contains('active')) {\n            anyFilterActive = true;\n            const group = \"a-savoir-rejoindre\";\n            if (!groupFilters[group]) groupFilters[group] = new Set();\n            groupFilters[group].add(btn.dataset.category);\n          }\n        });\n\n        \/\/ Pour chaque article, on v\u00e9rifie s'il correspond aux filtres et \u00e0 la page actuelle\n        let visibleCount = 0;\n        let filteredArticles = [];\n\n        articles.forEach(article => {\n          const articleCatList = article.dataset.category.split(' ');\n          let matchesAllGroups = true;\n\n          for (const group in groupFilters) {\n            const groupSet = groupFilters[group];\n            const hasMatchInGroup = Array.from(groupSet).some(cat => articleCatList.includes(cat));\n            if (!hasMatchInGroup) {\n              matchesAllGroups = false;\n              break;\n            }\n          }\n\n          \/\/ Si l'article correspond aux filtres, on le garde pour la pagination\n          if (matchesAllGroups) {\n            filteredArticles.push(article);\n          }\n\n          \/\/ On cache initialement tous les articles\n          article.style.display = 'none';\n        });\n\n        \/\/ Recalcul du nombre total de pages en fonction des articles filtr\u00e9s\n        totalPages = Math.max(1, Math.ceil(filteredArticles.length \/ postsPerPage));\n        if (totalPagesSpan) {\n          totalPagesSpan.textContent = totalPages.toString();\n        }\n\n        \/\/ Si la page actuelle d\u00e9passe le nouveau nombre total de pages, on revient \u00e0 la derni\u00e8re page disponible\n        if (currentPage > totalPages) {\n          currentPage = totalPages;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = currentPage.toString();\n          }\n        }\n\n        \/\/ Mettre \u00e0 jour les boutons de pagination\n        updatePaginationButtons();\n\n        \/\/ Afficher uniquement les articles de la page actuelle\n        const startIndex = (currentPage - 1) * postsPerPage;\n        const endIndex = Math.min(startIndex + postsPerPage, filteredArticles.length);\n\n        for (let i = startIndex; i < endIndex; i++) {\n          if (filteredArticles[i]) {\n            filteredArticles[i].style.display = 'block';\n          }\n        }\n\n        \/\/ Retire l'effet de chargement si activ\u00e9\n        if (filterContainer && filterContainer.classList.contains('loading')) {\n          filterContainer.classList.remove('loading');\n        }\n\n        \/\/ Une fois les articles filtr\u00e9s et initialis\u00e9s, nous pouvons afficher le conteneur\n        if (!initialized && articlesContainer) {\n          articlesContainer.classList.remove('loading-articles');\n          initialized = true;\n        }\n\n        return groupFilters; \/\/ Retourner les filtres actifs pour \u00eatre utilis\u00e9s par updateAvailableFilters()\n      }\n\n      \/\/ Nouvelle fonction pour mettre \u00e0 jour les options disponibles dans les listes d\u00e9roulantes\n      function updateAvailableFilters() {\n        if (dropdowns.length === 0) return;\n\n        \/\/ Ajouter une classe de chargement pendant la mise \u00e0 jour\n        if (filterContainer) filterContainer.classList.add('updating');\n\n        const activeFilters = filterArticles(); \/\/ R\u00e9cup\u00e9rer les filtres actuellement actifs\n\n        \/\/ Pour chaque liste d\u00e9roulante, nous devons d\u00e9terminer quelles options sont valides\n        dropdowns.forEach(dropdown => {\n          const currentGroup = dropdown.dataset.group;\n          const currentValue = dropdown.value;\n\n          \/\/ Cloner les filtters actifs sans inclure le filtre de cette liste d\u00e9roulante\n          const otherFilters = {};\n          for (const group in activeFilters) {\n            if (group !== currentGroup) {\n              otherFilters[group] = new Set(activeFilters[group]);\n            }\n          }\n\n          \/\/ D\u00e9terminer quelles options correspondent aux articles qui passeraient le filtre\n          const validOptions = new Set(['']); \/\/ L'option vide (Tous) est toujours valide\n\n          \/\/ Pour chaque article, v\u00e9rifier si son option est valide avec les autres filtres actifs\n          articles.forEach(article => {\n            const articleCats = article.dataset.category.split(' ');\n            let matchesOtherFilters = true;\n\n            \/\/ V\u00e9rifier si l'article correspond aux filtres des autres groupes\n            for (const group in otherFilters) {\n              const groupSet = otherFilters[group];\n              const hasMatch = Array.from(groupSet).some(cat => articleCats.includes(cat));\n              if (!hasMatch && groupSet.size > 0) {\n                matchesOtherFilters = false;\n                break;\n              }\n            }\n\n            \/\/ Si l'article correspond aux autres filtres, toutes ses cat\u00e9gories sont valides\n            if (matchesOtherFilters) {\n              articleCats.forEach(cat => validOptions.add(cat));\n            }\n          });\n\n          \/\/ R\u00e9tablir toutes les options originales\n          while (dropdown.options.length > 0) {\n            dropdown.remove(0);\n          }\n\n          \/\/ Recr\u00e9er les options en ne gardant que celles qui sont valides\n          originalOptions[currentGroup].forEach(option => {\n            const opt = document.createElement('option');\n            opt.value = option.value;\n            opt.textContent = option.text;\n\n            \/\/ Si l'option n'est pas dans la liste des valides, la d\u00e9sactiver\n            \/\/ sauf si c'est la valeur actuellement s\u00e9lectionn\u00e9e ou l'option \"Tous\"\n            if (!validOptions.has(option.value) && option.value !== currentValue && option.value !== '') {\n              opt.disabled = true;\n            }\n\n            dropdown.appendChild(opt);\n          });\n\n          \/\/ Restaurer la valeur s\u00e9lectionn\u00e9e\n          dropdown.value = currentValue;\n        });\n\n        \/\/ Retirer la classe de chargement\n        if (filterContainer) filterContainer.classList.remove('updating');\n      }\n\n      \/\/ Met \u00e0 jour l'URL avec les filtres actifs (pour partage ou navigation)\n      function updateUrl() {\n        const url = new URL(window.location.href);\n        const params = new URLSearchParams();\n\n        \/\/ Ajouter la page courante aux param\u00e8tres\n        params.set('page', currentPage.toString());\n\n        \/\/ Pour les checkboxes\n        checkboxes.forEach(checkbox => {\n          if (checkbox.checked) {\n            const group = checkbox.dataset.group;\n            if (!params.has(group)) {\n              params.set(group, checkbox.dataset.category);\n            } else {\n              const existing = params.get(group);\n              params.set(group, existing + ',' + checkbox.dataset.category);\n            }\n          }\n        });\n\n        \/\/ Pour les listes d\u00e9roulantes\n        dropdowns.forEach(dropdown => {\n          if (dropdown.value) {\n            const group = dropdown.dataset.group;\n            params.set(group, dropdown.value);\n          }\n        });\n\n        \/\/ Pour les boutons (un seul sera actif \u00e0 la fois)\n        const activeButton = container.querySelector('.filter-button.active');\n        if (activeButton) {\n          const group = \"a-savoir-rejoindre\";\n          params.set('active_button', activeButton.dataset.category);\n        }\n\n        const queryString = params.toString();\n        const newUrl = queryString ? `${url.origin}${url.pathname}?${queryString}` : `${url.origin}${url.pathname}`;\n\n        history.replaceState(null, '', newUrl);\n      }\n\n      \/\/ Applique les filtres si pr\u00e9sents dans l'URL (ex: apr\u00e8s rechargement ou lien partag\u00e9)\n      function applyUrlParams() {\n        const params = new URLSearchParams(window.location.search);\n        let hasUrlFilters = false;\n\n        \/\/ R\u00e9cup\u00e9rer la page depuis l'URL\n        if (params.has('page')) {\n          currentPage = parseInt(params.get('page'), 10) || 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = currentPage.toString();\n          }\n          hasUrlFilters = true;\n        }\n\n        \/\/ Pour les checkboxes\n        params.forEach((value, key) => {\n          if (key !== 'active_button' && key !== 'page') {\n            hasUrlFilters = true;\n            const values = value.split(',');\n            values.forEach(val => {\n              const checkbox = container.querySelector(`.filter-checkbox[data-category=\"${val}\"]`);\n              if (checkbox) {\n                checkbox.checked = true;\n              }\n\n              \/\/ Pour les listes d\u00e9roulantes\n              const dropdown = container.querySelector(`.filter-dropdown[data-group=\"${key}\"]`);\n              if (dropdown) {\n                dropdown.value = val;\n              }\n            });\n          }\n        });\n\n        \/\/ Pour le bouton actif depuis l'URL\n        const activeButtonSlug = params.get('active_button');\n        if (activeButtonSlug) {\n          hasUrlFilters = true;\n          const buttonToActivate = container.querySelector(`.filter-button[data-category=\"${activeButtonSlug}\"]`);\n          if (buttonToActivate) {\n            buttonToActivate.classList.add('active');\n          }\n        }\n\n        \/\/ Si des param\u00e8tres d'URL sont pr\u00e9sents, nous maintenons le conteneur cach\u00e9 jusqu'\u00e0 ce que les filtres soient appliqu\u00e9s\n        if (!hasUrlFilters && articlesContainer) {\n          articlesContainer.classList.remove('loading-articles');\n          initialized = true;\n        }\n\n        filterArticles();\n        updateAvailableFilters();\n      }\n\n      \/\/ Initialisation au chargement\n      filterArticles();\n      updateAvailableFilters();\n      handlePagination();\n      applyUrlParams();\n    })();\n  <\/script>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">En savoir plus<\/h2>\n\n\n  <div id=\"no-loop-2\" class=\"loop-articles\">\n    <div class=\"row\">\n      \n      \n            <div class=\"col-lg-12\">\n                          <div class=\"row articles-list loading-articles\">\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"en-savoir-plus-rejoindre nous-rejoindre\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/cotisation-annuelle\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"491\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/cotisation-annuelle.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/cotisation-annuelle.jpg 900w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/06\/cotisation-annuelle-768x419.jpg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>En savoir plus<\/p>\n                      <\/div>\n                      <h3>Cotisation annuelle<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"en-savoir-plus-rejoindre nous-rejoindre\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/en-savoir-plus-sur-le-club-des-cent-cols\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/en-savoir-plus-01.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/en-savoir-plus-01.png 1536w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/en-savoir-plus-01-1200x800.png 1200w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/en-savoir-plus-01-768x512.png 768w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/en-savoir-plus-01-18x12.png 18w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>En savoir plus<\/p>\n                      <\/div>\n                      <h3>En savoir plus sur le Club des Cent Cols<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                          <div class=\"col-xl-4 col-md-6 article-item\" data-category=\"en-savoir-plus-rejoindre\" data-page=\"1\" >\n                <a href=\"https:\/\/centcols.org\/nl\/diaporama-club-des-cent-cols\/\">\n                  <article>\n                    <div class=\"image\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"208\" src=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/montcenis-e1743029880875.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/montcenis-e1743029880875.jpg 800w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/montcenis-e1743029880875-768x200.jpg 768w, https:\/\/centcols.org\/wp-content\/uploads\/2025\/02\/montcenis-e1743029880875-600x156.jpg 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/div>\n                    <div class=\"contenu\">\n                      <div class=\"cat\">\n                        <p>En savoir plus<\/p>\n                      <\/div>\n                      <h3>Diaporama Club des Cent Cols<\/h3>\n                      <p class=\"btn-secondary\">En savoir plus<\/p>\n                    <\/div>\n                  <\/article>\n                <\/a>\n              <\/div>\n                      <\/div>\n\n          \n        \n\n      <\/div>\n          <\/div>\n  <\/div>\n  <script>\n    (function() {\n      const container = document.getElementById('no-loop-2');\n      if (!container) return;\n      const checkboxes = container.querySelectorAll('.filter-checkbox');\n      const dropdowns = container.querySelectorAll('.filter-dropdown');\n      const buttons = container.querySelectorAll('.filter-button');\n      const articles = container.querySelectorAll('.article-item');\n      const filterContainer = container.querySelector('.category-hierarchy-sidebar');\n      const articlesContainer = container.querySelector('.articles-list');\n\n      \/\/ \u00c9l\u00e9ments de pagination\n      const prevButton = container.querySelector('.pagination-prev');\n      const nextButton = container.querySelector('.pagination-next');\n      const currentPageSpan = container.querySelector('.current-page');\n      const totalPagesSpan = container.querySelector('.total-pages');\n\n      \/\/ Variables de pagination\n      let currentPage = 1;\n      let totalPages = parseInt(totalPagesSpan?.textContent || '1', 10);\n      const postsPerPage = 15;\n\n      \/\/ Fonction de gestion de la pagination\n      function handlePagination() {\n        if (!prevButton || !nextButton) return;\n\n        prevButton.addEventListener('click', () => {\n          if (currentPage > 1) {\n            currentPage--;\n            updatePagination();\n            scrollToTop();\n          }\n        });\n\n        nextButton.addEventListener('click', () => {\n          if (currentPage < totalPages) {\n            currentPage++;\n            updatePagination();\n            scrollToTop();\n          }\n        });\n\n        \/\/ Initialise l'\u00e9tat des boutons\n        updatePaginationButtons();\n      }\n\n      function updatePagination() {\n        \/\/ Mise \u00e0 jour des boutons\n        updatePaginationButtons();\n\n        \/\/ Mise \u00e0 jour du num\u00e9ro de page affich\u00e9\n        if (currentPageSpan) {\n          currentPageSpan.textContent = currentPage;\n        }\n\n        \/\/ Filtre les articles \u00e0 afficher selon la page actuelle\n        filterArticles();\n      }\n\n      function updatePaginationButtons() {\n        if (prevButton) {\n          prevButton.disabled = currentPage === 1;\n        }\n        if (nextButton) {\n          nextButton.disabled = currentPage === totalPages;\n        }\n      }\n\n      function scrollToTop() {\n        \/\/ Scroll vers le haut de la liste des articles\n        const scrollToElement = articlesContainer || container.querySelector('.loop-articles');\n        if (scrollToElement) {\n          scrollToElement.scrollIntoView({\n            behavior: 'smooth',\n            block: 'start'\n          });\n        }\n      }\n\n      \/\/ Gestion de la popup de description\n      const openPopupBtn = container.querySelector('.open-description-popup');\n      const popupOverlay = container.querySelector('.description-popup-overlay');\n      const closePopupBtn = container.querySelector('.close-popup');\n\n      if (openPopupBtn && popupOverlay) {\n        openPopupBtn.addEventListener('click', function() {\n          popupOverlay.style.display = 'flex';\n          document.body.style.overflow = 'hidden'; \/\/ Emp\u00eacher le d\u00e9filement\n        });\n      }\n\n      if (closePopupBtn && popupOverlay) {\n        closePopupBtn.addEventListener('click', function() {\n          popupOverlay.style.display = 'none';\n          document.body.style.overflow = ''; \/\/ R\u00e9activer le d\u00e9filement\n        });\n\n        \/\/ Fermer en cliquant en dehors du contenu\n        popupOverlay.addEventListener('click', function(e) {\n          if (e.target === popupOverlay) {\n            popupOverlay.style.display = 'none';\n            document.body.style.overflow = '';\n          }\n        });\n\n        \/\/ Fermer avec Echap\n        document.addEventListener('keydown', function(e) {\n          if (e.key === 'Escape' && popupOverlay.style.display === 'flex') {\n            popupOverlay.style.display = 'none';\n            document.body.style.overflow = '';\n          }\n        });\n      }\n\n      \/\/ Variable pour suivre si l'initialisation est termin\u00e9e\n      let initialized = false;\n\n      \/\/ Gestion du toggle mobile pour les filtres\n      const filterToggle = container.querySelector('.filter-toggle');\n      const categoryButtons = container.querySelector('.category-buttons');\n\n      if (filterToggle && categoryButtons) {\n        filterToggle.addEventListener('click', function() {\n          const isExpanded = filterToggle.getAttribute('aria-expanded') === 'true';\n          const toggleText = filterToggle.querySelector('.toggle-text');\n          const toggleIcon = filterToggle.querySelector('.toggle-icon');\n\n          if (isExpanded) {\n            \/\/ Fermer\n            categoryButtons.style.display = 'none';\n            filterToggle.setAttribute('aria-expanded', 'false');\n            toggleText.textContent = 'Afficher les filtres';\n            toggleIcon.textContent = '\u25bc';\n            filterToggle.classList.remove('expanded');\n          } else {\n            \/\/ Ouvrir\n            categoryButtons.style.display = 'flex';\n            filterToggle.setAttribute('aria-expanded', 'true');\n            toggleText.textContent = 'Masquer les filtres';\n            toggleIcon.textContent = '\u25b2';\n            filterToggle.classList.add('expanded');\n          }\n        });\n      }\n\n      \/\/ Stocker les options originales de chaque liste d\u00e9roulante pour pouvoir les restaurer\n      const originalOptions = {};\n\n      \/\/ Sauvegarder les options originales de toutes les listes d\u00e9roulantes\n      dropdowns.forEach(dropdown => {\n        const options = Array.from(dropdown.options).map(opt => ({\n          value: opt.value,\n          text: opt.text,\n          disabled: opt.disabled\n        }));\n        originalOptions[dropdown.dataset.group] = options;\n      });\n\n      \/\/ Gestion des boutons (layout=\"buttons\")\n      buttons.forEach(button => {\n        button.addEventListener('click', () => {\n          const cat = button.dataset.category;\n\n          \/\/ Si le bouton est d\u00e9j\u00e0 actif\n          if (button.classList.contains('active')) {\n            \/\/ Compter combien de boutons sont actifs\n            const activeCount = container.querySelectorAll('.filter-button.active').length;\n            \/\/ Si c'est le seul bouton actif, ne rien faire (emp\u00eacher la d\u00e9sactivation)\n            if (activeCount === 1) {\n              return;\n            }\n            \/\/ Sinon, on peut le d\u00e9sactiver normalement\n            button.classList.remove('active');\n          } else {\n            \/\/ D\u00e9sactiver tous les boutons\n            buttons.forEach(btn => btn.classList.remove('active'));\n            \/\/ Activer uniquement le bouton cliqu\u00e9\n            button.classList.add('active');\n          }\n\n          \/\/ R\u00e9initialiser la pagination \u00e0 la premi\u00e8re page lors du changement de filtre\n          currentPage = 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = '1';\n          }\n\n          filterArticles();\n          updateAvailableFilters();\n          updateUrl();\n        });\n      });\n\n      \/\/ Gestion des checkboxes (layout=\"filters\")\n      checkboxes.forEach(function(checkbox) {\n        checkbox.addEventListener('change', () => {\n          \/\/ R\u00e9initialiser la pagination \u00e0 la premi\u00e8re page lors du changement de filtre\n          currentPage = 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = '1';\n          }\n\n          filterArticles();\n          updateAvailableFilters();\n          updateUrl();\n        });\n      });\n\n      \/\/ Gestion des listes d\u00e9roulantes (nouveau)\n      dropdowns.forEach(function(dropdown) {\n        dropdown.addEventListener('change', () => {\n          \/\/ R\u00e9initialiser la pagination \u00e0 la premi\u00e8re page lors du changement de filtre\n          currentPage = 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = '1';\n          }\n\n          filterArticles();\n          updateAvailableFilters();\n          updateUrl();\n        });\n      });\n\n      \/\/ Fonction principale qui filtre les articles en fonction des filtres actifs\n      function filterArticles() {\n        const groupFilters = {}; \/\/ Structure qui stocke les filtres actifs regroup\u00e9s par \"groupe\"\n        let anyFilterActive = false; \/\/ Pour savoir si au moins un filtre est actif\n\n        \/\/ R\u00e9cup\u00e9ration des checkboxes coch\u00e9es\n        checkboxes.forEach(cb => {\n          if (cb.checked) {\n            anyFilterActive = true;\n            const group = cb.dataset.group;\n            if (!groupFilters[group]) groupFilters[group] = new Set();\n            groupFilters[group].add(cb.dataset.category);\n          }\n        });\n\n        \/\/ R\u00e9cup\u00e9ration des valeurs de listes d\u00e9roulantes s\u00e9lectionn\u00e9es\n        dropdowns.forEach(dropdown => {\n          if (dropdown.value) {\n            anyFilterActive = true;\n            const group = dropdown.dataset.group;\n            if (!groupFilters[group]) groupFilters[group] = new Set();\n            groupFilters[group].add(dropdown.value);\n          }\n        });\n\n        \/\/ R\u00e9cup\u00e9ration des boutons actifs\n        buttons.forEach(btn => {\n          if (btn.classList.contains('active')) {\n            anyFilterActive = true;\n            const group = \"en-savoir-plus-rejoindre\";\n            if (!groupFilters[group]) groupFilters[group] = new Set();\n            groupFilters[group].add(btn.dataset.category);\n          }\n        });\n\n        \/\/ Pour chaque article, on v\u00e9rifie s'il correspond aux filtres et \u00e0 la page actuelle\n        let visibleCount = 0;\n        let filteredArticles = [];\n\n        articles.forEach(article => {\n          const articleCatList = article.dataset.category.split(' ');\n          let matchesAllGroups = true;\n\n          for (const group in groupFilters) {\n            const groupSet = groupFilters[group];\n            const hasMatchInGroup = Array.from(groupSet).some(cat => articleCatList.includes(cat));\n            if (!hasMatchInGroup) {\n              matchesAllGroups = false;\n              break;\n            }\n          }\n\n          \/\/ Si l'article correspond aux filtres, on le garde pour la pagination\n          if (matchesAllGroups) {\n            filteredArticles.push(article);\n          }\n\n          \/\/ On cache initialement tous les articles\n          article.style.display = 'none';\n        });\n\n        \/\/ Recalcul du nombre total de pages en fonction des articles filtr\u00e9s\n        totalPages = Math.max(1, Math.ceil(filteredArticles.length \/ postsPerPage));\n        if (totalPagesSpan) {\n          totalPagesSpan.textContent = totalPages.toString();\n        }\n\n        \/\/ Si la page actuelle d\u00e9passe le nouveau nombre total de pages, on revient \u00e0 la derni\u00e8re page disponible\n        if (currentPage > totalPages) {\n          currentPage = totalPages;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = currentPage.toString();\n          }\n        }\n\n        \/\/ Mettre \u00e0 jour les boutons de pagination\n        updatePaginationButtons();\n\n        \/\/ Afficher uniquement les articles de la page actuelle\n        const startIndex = (currentPage - 1) * postsPerPage;\n        const endIndex = Math.min(startIndex + postsPerPage, filteredArticles.length);\n\n        for (let i = startIndex; i < endIndex; i++) {\n          if (filteredArticles[i]) {\n            filteredArticles[i].style.display = 'block';\n          }\n        }\n\n        \/\/ Retire l'effet de chargement si activ\u00e9\n        if (filterContainer && filterContainer.classList.contains('loading')) {\n          filterContainer.classList.remove('loading');\n        }\n\n        \/\/ Une fois les articles filtr\u00e9s et initialis\u00e9s, nous pouvons afficher le conteneur\n        if (!initialized && articlesContainer) {\n          articlesContainer.classList.remove('loading-articles');\n          initialized = true;\n        }\n\n        return groupFilters; \/\/ Retourner les filtres actifs pour \u00eatre utilis\u00e9s par updateAvailableFilters()\n      }\n\n      \/\/ Nouvelle fonction pour mettre \u00e0 jour les options disponibles dans les listes d\u00e9roulantes\n      function updateAvailableFilters() {\n        if (dropdowns.length === 0) return;\n\n        \/\/ Ajouter une classe de chargement pendant la mise \u00e0 jour\n        if (filterContainer) filterContainer.classList.add('updating');\n\n        const activeFilters = filterArticles(); \/\/ R\u00e9cup\u00e9rer les filtres actuellement actifs\n\n        \/\/ Pour chaque liste d\u00e9roulante, nous devons d\u00e9terminer quelles options sont valides\n        dropdowns.forEach(dropdown => {\n          const currentGroup = dropdown.dataset.group;\n          const currentValue = dropdown.value;\n\n          \/\/ Cloner les filtters actifs sans inclure le filtre de cette liste d\u00e9roulante\n          const otherFilters = {};\n          for (const group in activeFilters) {\n            if (group !== currentGroup) {\n              otherFilters[group] = new Set(activeFilters[group]);\n            }\n          }\n\n          \/\/ D\u00e9terminer quelles options correspondent aux articles qui passeraient le filtre\n          const validOptions = new Set(['']); \/\/ L'option vide (Tous) est toujours valide\n\n          \/\/ Pour chaque article, v\u00e9rifier si son option est valide avec les autres filtres actifs\n          articles.forEach(article => {\n            const articleCats = article.dataset.category.split(' ');\n            let matchesOtherFilters = true;\n\n            \/\/ V\u00e9rifier si l'article correspond aux filtres des autres groupes\n            for (const group in otherFilters) {\n              const groupSet = otherFilters[group];\n              const hasMatch = Array.from(groupSet).some(cat => articleCats.includes(cat));\n              if (!hasMatch && groupSet.size > 0) {\n                matchesOtherFilters = false;\n                break;\n              }\n            }\n\n            \/\/ Si l'article correspond aux autres filtres, toutes ses cat\u00e9gories sont valides\n            if (matchesOtherFilters) {\n              articleCats.forEach(cat => validOptions.add(cat));\n            }\n          });\n\n          \/\/ R\u00e9tablir toutes les options originales\n          while (dropdown.options.length > 0) {\n            dropdown.remove(0);\n          }\n\n          \/\/ Recr\u00e9er les options en ne gardant que celles qui sont valides\n          originalOptions[currentGroup].forEach(option => {\n            const opt = document.createElement('option');\n            opt.value = option.value;\n            opt.textContent = option.text;\n\n            \/\/ Si l'option n'est pas dans la liste des valides, la d\u00e9sactiver\n            \/\/ sauf si c'est la valeur actuellement s\u00e9lectionn\u00e9e ou l'option \"Tous\"\n            if (!validOptions.has(option.value) && option.value !== currentValue && option.value !== '') {\n              opt.disabled = true;\n            }\n\n            dropdown.appendChild(opt);\n          });\n\n          \/\/ Restaurer la valeur s\u00e9lectionn\u00e9e\n          dropdown.value = currentValue;\n        });\n\n        \/\/ Retirer la classe de chargement\n        if (filterContainer) filterContainer.classList.remove('updating');\n      }\n\n      \/\/ Met \u00e0 jour l'URL avec les filtres actifs (pour partage ou navigation)\n      function updateUrl() {\n        const url = new URL(window.location.href);\n        const params = new URLSearchParams();\n\n        \/\/ Ajouter la page courante aux param\u00e8tres\n        params.set('page', currentPage.toString());\n\n        \/\/ Pour les checkboxes\n        checkboxes.forEach(checkbox => {\n          if (checkbox.checked) {\n            const group = checkbox.dataset.group;\n            if (!params.has(group)) {\n              params.set(group, checkbox.dataset.category);\n            } else {\n              const existing = params.get(group);\n              params.set(group, existing + ',' + checkbox.dataset.category);\n            }\n          }\n        });\n\n        \/\/ Pour les listes d\u00e9roulantes\n        dropdowns.forEach(dropdown => {\n          if (dropdown.value) {\n            const group = dropdown.dataset.group;\n            params.set(group, dropdown.value);\n          }\n        });\n\n        \/\/ Pour les boutons (un seul sera actif \u00e0 la fois)\n        const activeButton = container.querySelector('.filter-button.active');\n        if (activeButton) {\n          const group = \"en-savoir-plus-rejoindre\";\n          params.set('active_button', activeButton.dataset.category);\n        }\n\n        const queryString = params.toString();\n        const newUrl = queryString ? `${url.origin}${url.pathname}?${queryString}` : `${url.origin}${url.pathname}`;\n\n        history.replaceState(null, '', newUrl);\n      }\n\n      \/\/ Applique les filtres si pr\u00e9sents dans l'URL (ex: apr\u00e8s rechargement ou lien partag\u00e9)\n      function applyUrlParams() {\n        const params = new URLSearchParams(window.location.search);\n        let hasUrlFilters = false;\n\n        \/\/ R\u00e9cup\u00e9rer la page depuis l'URL\n        if (params.has('page')) {\n          currentPage = parseInt(params.get('page'), 10) || 1;\n          if (currentPageSpan) {\n            currentPageSpan.textContent = currentPage.toString();\n          }\n          hasUrlFilters = true;\n        }\n\n        \/\/ Pour les checkboxes\n        params.forEach((value, key) => {\n          if (key !== 'active_button' && key !== 'page') {\n            hasUrlFilters = true;\n            const values = value.split(',');\n            values.forEach(val => {\n              const checkbox = container.querySelector(`.filter-checkbox[data-category=\"${val}\"]`);\n              if (checkbox) {\n                checkbox.checked = true;\n              }\n\n              \/\/ Pour les listes d\u00e9roulantes\n              const dropdown = container.querySelector(`.filter-dropdown[data-group=\"${key}\"]`);\n              if (dropdown) {\n                dropdown.value = val;\n              }\n            });\n          }\n        });\n\n        \/\/ Pour le bouton actif depuis l'URL\n        const activeButtonSlug = params.get('active_button');\n        if (activeButtonSlug) {\n          hasUrlFilters = true;\n          const buttonToActivate = container.querySelector(`.filter-button[data-category=\"${activeButtonSlug}\"]`);\n          if (buttonToActivate) {\n            buttonToActivate.classList.add('active');\n          }\n        }\n\n        \/\/ Si des param\u00e8tres d'URL sont pr\u00e9sents, nous maintenons le conteneur cach\u00e9 jusqu'\u00e0 ce que les filtres soient appliqu\u00e9s\n        if (!hasUrlFilters && articlesContainer) {\n          articlesContainer.classList.remove('loading-articles');\n          initialized = true;\n        }\n\n        filterArticles();\n        updateAvailableFilters();\n      }\n\n      \/\/ Initialisation au chargement\n      filterArticles();\n      updateAvailableFilters();\n      handlePagination();\n      applyUrlParams();\n    })();\n  <\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Le Club des Cent Cols rassemble des passionn\u00e9\u00b7es de montagne, de libert\u00e9 et d&rsquo;aventure \u00e0 v\u00e9lo. Plus qu&rsquo;une liste de cols, c&rsquo;est un \u00e9tat d&rsquo;esprit ! Sur cette page, retrouvez toutes les informations pour nous rejoindre. Le Club c\u2019est\u2026 \u2026 et ce que le Club n\u2019est pas \u00c0 savoir En savoir plus<\/p>","protected":false},"author":3,"featured_media":83203,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[244],"tags":[],"class_list":["post-85065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-non-classifiee"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Test Loop - Club des Cent Cols<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/centcols.org\/nl\/testlus\/\" \/>\n<meta property=\"og:locale\" content=\"nl_BE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Test Loop - Club des Cent Cols\" \/>\n<meta property=\"og:description\" content=\"Le Club des Cent Cols rassemble des passionn\u00e9\u00b7es de montagne, de libert\u00e9 et d&rsquo;aventure \u00e0 v\u00e9lo. Plus qu&rsquo;une liste de cols, c&rsquo;est un \u00e9tat d&rsquo;esprit ! Sur cette page, retrouvez toutes les informations pour nous rejoindre. Le Club c\u2019est\u2026 \u2026 et ce que le Club n\u2019est pas \u00c0 savoir En savoir plus\" \/>\n<meta property=\"og:url\" content=\"https:\/\/centcols.org\/nl\/testlus\/\" \/>\n<meta property=\"og:site_name\" content=\"Club des Cent Cols\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/groups\/5261880558\/?locale=fr_FR\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-01T18:38:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-29T09:31:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Webmestre\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Webmestre\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/centcols.org\/test-loop\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/centcols.org\/test-loop\/\"},\"author\":{\"name\":\"Webmestre\",\"@id\":\"https:\/\/centcols.org\/#\/schema\/person\/911b404fb133d8c913dd27cdcf71c8e5\"},\"headline\":\"Test Loop\",\"datePublished\":\"2025-01-01T18:38:23+00:00\",\"dateModified\":\"2025-07-29T09:31:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/centcols.org\/test-loop\/\"},\"wordCount\":398,\"publisher\":{\"@id\":\"https:\/\/centcols.org\/#organization\"},\"image\":{\"@id\":\"https:\/\/centcols.org\/test-loop\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png\",\"articleSection\":[\"Non classifi\u00e9(e)\"],\"inLanguage\":\"nl-BE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/centcols.org\/test-loop\/\",\"url\":\"https:\/\/centcols.org\/test-loop\/\",\"name\":\"Test Loop - Club des Cent Cols\",\"isPartOf\":{\"@id\":\"https:\/\/centcols.org\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/centcols.org\/test-loop\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/centcols.org\/test-loop\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png\",\"datePublished\":\"2025-01-01T18:38:23+00:00\",\"dateModified\":\"2025-07-29T09:31:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/centcols.org\/test-loop\/#breadcrumb\"},\"inLanguage\":\"nl-BE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/centcols.org\/test-loop\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\/\/centcols.org\/test-loop\/#primaryimage\",\"url\":\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png\",\"contentUrl\":\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/centcols.org\/test-loop\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/centcols.org\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Non classifi\u00e9(e)\",\"item\":\"https:\/\/centcols.org\/rubrique\/non-classifiee\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Test Loop\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/centcols.org\/#website\",\"url\":\"https:\/\/centcols.org\/\",\"name\":\"Club des Cent Cols\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/centcols.org\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/centcols.org\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-BE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/centcols.org\/#organization\",\"name\":\"Club des Cent Cols\",\"url\":\"https:\/\/centcols.org\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\/\/centcols.org\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/carte-icone.png\",\"contentUrl\":\"https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/carte-icone.png\",\"width\":250,\"height\":250,\"caption\":\"Club des Cent Cols\"},\"image\":{\"@id\":\"https:\/\/centcols.org\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/groups\/5261880558\/?locale=fr_FR\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/centcols.org\/#\/schema\/person\/911b404fb133d8c913dd27cdcf71c8e5\",\"name\":\"Webmestre\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\/\/centcols.org\/wp-content\/litespeed\/avatar\/2d246e4b6b4f773e08515e1ffc53690b.jpg?ver=1777222892\",\"url\":\"https:\/\/centcols.org\/wp-content\/litespeed\/avatar\/2d246e4b6b4f773e08515e1ffc53690b.jpg?ver=1777222892\",\"contentUrl\":\"https:\/\/centcols.org\/wp-content\/litespeed\/avatar\/2d246e4b6b4f773e08515e1ffc53690b.jpg?ver=1777222892\",\"caption\":\"Webmestre\"},\"url\":\"https:\/\/centcols.org\/nl\/author\/webmestre\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Testlus - Club des Cent Cols","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/centcols.org\/nl\/testlus\/","og_locale":"nl_BE","og_type":"article","og_title":"Test Loop - Club des Cent Cols","og_description":"Le Club des Cent Cols rassemble des passionn\u00e9\u00b7es de montagne, de libert\u00e9 et d&rsquo;aventure \u00e0 v\u00e9lo. Plus qu&rsquo;une liste de cols, c&rsquo;est un \u00e9tat d&rsquo;esprit ! Sur cette page, retrouvez toutes les informations pour nous rejoindre. Le Club c\u2019est\u2026 \u2026 et ce que le Club n\u2019est pas \u00c0 savoir En savoir plus","og_url":"https:\/\/centcols.org\/nl\/testlus\/","og_site_name":"Club des Cent Cols","article_publisher":"https:\/\/www.facebook.com\/groups\/5261880558\/?locale=fr_FR","article_published_time":"2025-01-01T18:38:23+00:00","article_modified_time":"2025-07-29T09:31:57+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png","type":"image\/png"}],"author":"Webmestre","twitter_card":"summary_large_image","twitter_misc":{"Geschreven door":"Webmestre","Geschatte leestijd":"3 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/centcols.org\/test-loop\/#article","isPartOf":{"@id":"https:\/\/centcols.org\/test-loop\/"},"author":{"name":"Webmestre","@id":"https:\/\/centcols.org\/#\/schema\/person\/911b404fb133d8c913dd27cdcf71c8e5"},"headline":"Test Loop","datePublished":"2025-01-01T18:38:23+00:00","dateModified":"2025-07-29T09:31:57+00:00","mainEntityOfPage":{"@id":"https:\/\/centcols.org\/test-loop\/"},"wordCount":398,"publisher":{"@id":"https:\/\/centcols.org\/#organization"},"image":{"@id":"https:\/\/centcols.org\/test-loop\/#primaryimage"},"thumbnailUrl":"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png","articleSection":["Non classifi\u00e9(e)"],"inLanguage":"nl-BE"},{"@type":"WebPage","@id":"https:\/\/centcols.org\/test-loop\/","url":"https:\/\/centcols.org\/test-loop\/","name":"Testlus - Club des Cent Cols","isPartOf":{"@id":"https:\/\/centcols.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/centcols.org\/test-loop\/#primaryimage"},"image":{"@id":"https:\/\/centcols.org\/test-loop\/#primaryimage"},"thumbnailUrl":"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png","datePublished":"2025-01-01T18:38:23+00:00","dateModified":"2025-07-29T09:31:57+00:00","breadcrumb":{"@id":"https:\/\/centcols.org\/test-loop\/#breadcrumb"},"inLanguage":"nl-BE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/centcols.org\/test-loop\/"]}]},{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/centcols.org\/test-loop\/#primaryimage","url":"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png","contentUrl":"https:\/\/centcols.org\/wp-content\/uploads\/2025\/05\/regledujeu3.png","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/centcols.org\/test-loop\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/centcols.org\/"},{"@type":"ListItem","position":2,"name":"Non classifi\u00e9(e)","item":"https:\/\/centcols.org\/rubrique\/non-classifiee\/"},{"@type":"ListItem","position":3,"name":"Test Loop"}]},{"@type":"WebSite","@id":"https:\/\/centcols.org\/#website","url":"https:\/\/centcols.org\/","name":"Club van Cent Cols","description":"","publisher":{"@id":"https:\/\/centcols.org\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/centcols.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-BE"},{"@type":"Organization","@id":"https:\/\/centcols.org\/#organization","name":"Club van Cent Cols","url":"https:\/\/centcols.org\/","logo":{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/centcols.org\/#\/schema\/logo\/image\/","url":"https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/carte-icone.png","contentUrl":"https:\/\/centcols.org\/wp-content\/uploads\/2025\/01\/carte-icone.png","width":250,"height":250,"caption":"Club des Cent Cols"},"image":{"@id":"https:\/\/centcols.org\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/groups\/5261880558\/?locale=fr_FR"]},{"@type":"Person","@id":"https:\/\/centcols.org\/#\/schema\/person\/911b404fb133d8c913dd27cdcf71c8e5","name":"Webmaster","image":{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/centcols.org\/wp-content\/litespeed\/avatar\/2d246e4b6b4f773e08515e1ffc53690b.jpg?ver=1777222892","url":"https:\/\/centcols.org\/wp-content\/litespeed\/avatar\/2d246e4b6b4f773e08515e1ffc53690b.jpg?ver=1777222892","contentUrl":"https:\/\/centcols.org\/wp-content\/litespeed\/avatar\/2d246e4b6b4f773e08515e1ffc53690b.jpg?ver=1777222892","caption":"Webmestre"},"url":"https:\/\/centcols.org\/nl\/author\/webmestre\/"}]}},"_links":{"self":[{"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/posts\/85065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/comments?post=85065"}],"version-history":[{"count":0,"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/posts\/85065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/media\/83203"}],"wp:attachment":[{"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/media?parent=85065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/categories?post=85065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/centcols.org\/nl\/wp-json\/wp\/v2\/tags?post=85065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}