{"id":855,"date":"2025-09-18T12:39:14","date_gmt":"2025-09-18T10:39:14","guid":{"rendered":"https:\/\/www.fondazioneunipolis.org\/site\/?page_id=855"},"modified":"2026-02-06T13:44:16","modified_gmt":"2026-02-06T12:44:16","slug":"news","status":"publish","type":"page","link":"https:\/\/www.fondazioneunipolis.org\/site\/news\/","title":{"rendered":"News"},"content":{"rendered":"\n\n    <section class=\"hero-section background-dark-blue\">\n      <div class=\"hero-carousel\">\n        <div class=\"hero-slide\">\n          <img class=\"illustration-bottom\" src=\"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/08\/blob-progetti.png\" alt=\"\" \/>\n          <img class=\"illustration-top\" src=\"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/08\/megafono.png\" alt=\"\" \/>\n\n          <div class=\"container\">\n            <h1 class=\"main-title\" data-animate=\"words\">\n              News            <\/h1>\n                          <p class=\"main-description\" data-animate=\"words\">\n                  Raccontare per dare voce al cambiamento. Attraverso le storie delle iniziative che realizziamo e sosteniamo, rendiamo visibile e condividiamo il nostro impegno quotidiano per una societ\u00e0 pi\u00f9 equa e solidale. In questa sezione trovi aggiornamenti e notizie per seguire da vicino ci\u00f2 che costruiamo insieme.              <\/p>\n                      <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n    \n\n\n\n    <!-- Filter Dashboard Section -->\n    <section class=\"filter-section\">\n        <div class=\"container\">            \n            <!-- Filter Chips Container -->\n            <div class=\"chips-container\">\n                <!-- GESTIONE ORDINAMENTO PRESTABILITO -->\n                <button class=\"chip-filter\" data-filter=\"disuguaglianze\">Disuguaglianze<\/button>\n                <button class=\"chip-filter\" data-filter=\"mobilita\">Mobilit\u00e0<\/button>\n                <button class=\"chip-filter\" data-filter=\"welfare\">Welfare<\/button>\n                <button class=\"chip-filter\" data-filter=\"unipolis\">Unipolis<\/button>\n                <button class=\"chip-filter\" data-filter=\"eventi\">Eventi<\/button>\n\n                <!-- Year Select Field -->\n                <div class=\"custom-select-container\" data-selected=\"\">\n                    <button class=\"custom-select-button\" id=\"customSelect\">\n                        <span class=\"select-text\">Anno<\/span>\n                        <svg\n                            class=\"select-arrow\"\n                            width=\"24\"\n                            height=\"24\"\n                            viewBox=\"0 0 24 24\"\n                            fill=\"#191918\">\n                            <path\n                                d=\"M16.59 8.29492L12 12.8749L7.41 8.29492L6 9.70492L12 15.7049L18 9.70492L16.59 8.29492Z\"\n                                fill=\"#191918\" \/>\n                        <\/svg>\n                    <\/button>\n                    <div class=\"custom-select-dropdown\" id=\"customDropdown\">\n                        <button class=\"custom-option\" data-value=\"\">Anno<\/button>\n                                                                                    <button class=\"custom-option\" data-value=\"2026\">2026<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2025\">2025<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2024\">2024<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2023\">2023<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2022\">2022<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2021\">2021<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2020\">2020<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2019\">2019<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2018\">2018<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2017\">2017<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2016\">2016<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2015\">2015<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2014\">2014<\/button>\n                                                            <button class=\"custom-option\" data-value=\"2013\">2013<\/button>\n                                                                        <\/div>\n                <\/div>\n            <\/div>            \n        <\/div>\n    <\/section>\n\n    <section class=\"section-card-news\" id=\"cardSection\" style=\"background: linear-gradient(180deg, #00355F 0%, #00355F calc(100% - 580px), transparent calc(100% - 580px), transparent 100%), url('https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/10\/Vector-1-1.png') no-repeat center bottom \/ 100% 600px transparent;\">\n        <div class=\"container\">\n            <div class=\"cards-grid\" id=\"result-container\">\n            <\/div>\n            \n            <button class=\"load-more-btn\" id=\"load-more\" style=\"display:none;\">\n                Mostra altre\n                <img src=\"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/themes\/unipolis\/img\/expand_more_white.svg\" \/>\n            <\/button>            \n        <\/div>        \n    <\/section>\n    \n        \n    <script>\n\n        let currentPage = 1;\n        let hasMore = false;\n        let activeFilters = { chips: [], year: null };\n        const container = document.getElementById(\"result-container\");\n        const loadMoreBtn = document.getElementById(\"load-more\");\n\n        class CustomSelect {\n            constructor(container) {\n                this.container = container;\n                this.button = container.querySelector(\".custom-select-button\");\n                this.dropdown = container.querySelector(\".custom-select-dropdown\");\n                this.options = container.querySelectorAll(\".custom-option\");\n                this.textElement = container.querySelector(\".select-text\");\n                this.isOpen = false;\n                this.selectedValue = \"\";\n\n                this.init();\n            }\n\n            init() {\n                \/\/ Event listeners\n                this.button.addEventListener(\"click\", () => this.toggle());\n\n                this.options.forEach((option) => {\n                    option.addEventListener(\"click\", (e) => this.selectOption(e));\n                });\n\n                \/\/ Chiudi quando si clicca fuori\n                document.addEventListener(\"click\", (e) => {\n                    if (!this.container.contains(e.target)) {\n                        this.close();\n                    }\n                });\n\n                \/\/ Gestione tastiera\n                this.button.addEventListener(\"keydown\", (e) => {\n                    if (e.key === \"Enter\" || e.key === \" \") {\n                        e.preventDefault();\n                        this.toggle();\n                    } else if (e.key === \"Escape\") {\n                        this.close();\n                    }\n                });\n            }\n\n            toggle() {\n                this.isOpen ? this.close() : this.open();\n            }\n\n            open() {\n                this.isOpen = true;\n                this.button.classList.add(\"open\");\n                this.dropdown.classList.add(\"open\");\n                this.button.setAttribute(\"aria-expanded\", \"true\");\n            }\n\n            close() {\n                this.isOpen = false;\n                this.button.classList.remove(\"open\");\n                this.dropdown.classList.remove(\"open\");\n                this.button.setAttribute(\"aria-expanded\", \"false\");\n            }\n\n            selectOption(e) {\n                const option = e.target;\n                const value = option.dataset.value;\n                const text = option.textContent;\n\n                \/\/ Aggiorna selezione visiva\n                this.options.forEach((opt) => opt.classList.remove(\"selected\"));\n                option.classList.add(\"selected\");\n\n                \/\/ Aggiorna testo e valore\n                this.textElement.textContent = text;\n                this.selectedValue = value;\n\n                \/\/ Chiudi dropdown\n                this.close();\n\n                \/\/ Trigger evento personalizzato\n                this.container.dispatchEvent(\n                    new CustomEvent(\"change\", {\n                        detail: {\n                            value,\n                            text\n                        },\n                    })\n                );\n            }\n\n            getValue() {\n                return this.selectedValue;\n            }\n\n            setValue(value) {\n                const option = Array.from(this.options).find(\n                    (opt) => opt.dataset.value === value\n                );\n                if (option) {\n                    option.click();\n                }\n            }\n        }        \n\n        document.addEventListener(\"DOMContentLoaded\", function() {\n            initializeFilterChips();\n            initializeYearSelect();\n        });\n\n        function initializeFilterChips() {\n            const filterChips = document.querySelectorAll(\".chip-filter\");\n\n            filterChips.forEach((chip) => {\n                chip.addEventListener(\"click\", function() {\n\n                    this.classList.toggle(\"active\");\n\n                    const filterValue = this.getAttribute(\"data-filter\");\n\n                    handleFilterChange();\n                });\n\n                chip.addEventListener(\"keydown\", function(e) {\n                    if (e.key === \"Enter\" || e.key === \" \") {\n                        e.preventDefault();\n                        this.click();\n                    }\n                });\n            });\n        }\n\n        \/\/ Initialize Year Select\n        function initializeYearSelect() {\n\n            \/\/ Inizializza la select personalizzata\n            const customSelectContainer = document.querySelector(\n                \".custom-select-container\"\n            );\n            const customSelect = new CustomSelect(customSelectContainer);\n\n            \/\/ Esempio di utilizzo - ascolta i cambiamenti\n            customSelectContainer.addEventListener(\"change\", (e) => {\n                customSelectContainer.setAttribute(\"data-selected\", e.detail.value);           \n                handleFilterChange();\n            });\n\n        }\n\n        \/\/ Handle Filter Changes\n        function handleFilterChange() {\n            activeFilters.chips = [];\n            activeFilters.year = null;\n            \n            const filterChips = document.querySelectorAll(\".chip-filter.active\");\n            const yearSelect = document.querySelector(\".custom-select-container\");\n\n            \/\/ Chip attivi\n            filterChips.forEach((chip) => {\n                activeFilters.chips.push(chip.getAttribute(\"data-filter\"));\n            });\n\n            \/\/ Recupera l'anno dal data-selected            \n            if (yearSelect) {\n                selectedYear = yearSelect.getAttribute(\"data-selected\");\n                activeFilters.year = selectedYear ? selectedYear : null;\n            }            \n\n            updateAriaAttributes();\n            currentPage = 1;\n            applyFilters(activeFilters, false); \/\/ carica da pagina 1            \n        }\n\n        function applyFilters(filters, append = false) {\n            \/\/Devo fare la chiamata ajax al mio hook personalizzato (no admin-ajax) per recuperare i progetti filtrati            \n            const payload = {\n                ...filters,\n                page: currentPage\n            };\n\n            console.log(\"active Filters\",payload);\n\n            const apiUrl = \"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/unipolis\/v1\/filtra-news\";\n            fetch(apiUrl, {\n                method: \"POST\",\n                headers: {\n                    \"Content-Type\": \"application\/json\",\n                },\n                body: JSON.stringify(payload),\n            })\n            .then(response => {\n                if (!response.ok) {\n                    throw new Error(\"Errore nella richiesta AJAX\");\n                }\n                return response.json();\n            })\n            .then(data => {                \n                \/\/ Qui aggiorna il DOM con i dati ricevuti\n                \/\/document.getElementById('result-container').innerHTML = data;                \n                if (!append) {\n                    container.innerHTML = data.html;\n                    currentPage = 1; \/\/ reset alla prima pagina\n                } else {\n                    container.insertAdjacentHTML(\"beforeend\", data.html);                                 \n                }                \n\n                if (data.has_more) {\n                    hasMore = true;\n                    currentPage = data.next_page;\n                    loadMoreBtn.style.display = \"block\";\n                } else {\n                    hasMore = false;\n                    loadMoreBtn.style.display = \"none\";\n                }\n            })\n            .catch(error => {\n                console.error(\"Errore nel filtro:\", error);\n            });\n        }\n\n        \/\/ Accessibility improvements\n        document.addEventListener(\"DOMContentLoaded\", function() {\n            \/\/ Add ARIA labels for better accessibility\n            const filterChips = document.querySelectorAll(\".chip-filter\");\n            filterChips.forEach((chip, index) => {\n                chip.setAttribute(\"role\", \"button\");\n                chip.setAttribute(\"aria-pressed\", \"false\");\n                chip.setAttribute(\"tabindex\", \"0\");\n            });\n\n            \/\/chiamata iniziale per recuperare i progetti senza filtri            \n            applyFilters(activeFilters,false);\n            \n            loadMoreBtn.addEventListener(\"click\", function() {\n                if (hasMore) {\n                    applyFilters(activeFilters, true);\n                }\n            });\n\n        });\n\n        \/\/ Update ARIA attributes when states change\n        function updateAriaAttributes() {\n            \/\/ Update filter chips\n            const filterChips = document.querySelectorAll(\".chip-filter\");\n            filterChips.forEach((chip) => {\n                const isActive = chip.classList.contains(\"active\");\n                chip.setAttribute(\"aria-pressed\", isActive.toString());\n            });\n        }\n    <\/script>\n\n\n\n\n    <section class=\"newsletter newsletter-merged\">\n        <div class=\"container newsletter-content\">\n            <div class=\"container\">\n                <div class=\"content-wrapper\">\n                    <h2 class=\"title-newsletter\" data-animate=\"words\">Iscriviti<br \/>alla nostra<br \/>newsletter<\/h2>\n                    <p class=\"paragraph\" data-animate=\"words\">\n                        Non perderti aggiornamenti su bandi,<br \/>progetti, notizie ed informazioni<br \/>sulla nostra Fondazione.                    <\/p>\n                                            <a class=\"unipolis-button white-button\" href=\"https:\/\/mn.fondazioneunipolis.org\/iscrizionefondazione\" data-animate=\"words\">\n                            ISCRIVITI ALLA NEWSLETTER                        <\/a>\n                    \n                                            <img\n                            src=\"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/08\/vector-yellow.png\"\n                            alt=\"\"\n                            class=\"line-yellow\" \n                        \/>\n                                          \n\n                                            <img\n                            src=\"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/08\/omino.png\"\n                            alt=\"\"\n                            class=\"omino-seduto\" \n                        \/>\n                                        \n                <\/div>\n                              \n                            <\/div>\n        <\/div>\n    <\/section>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-855","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>News - Unipolis<\/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:\/\/www.fondazioneunipolis.org\/site\/news\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"News - Unipolis\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fondazioneunipolis.org\/site\/news\/\" \/>\n<meta property=\"og:site_name\" content=\"Unipolis\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-06T12:44:16+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/news\/\",\"url\":\"https:\/\/www.fondazioneunipolis.org\/site\/news\/\",\"name\":\"News - Unipolis\",\"isPartOf\":{\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/#website\"},\"datePublished\":\"2025-09-18T10:39:14+00:00\",\"dateModified\":\"2026-02-06T12:44:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/news\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fondazioneunipolis.org\/site\/news\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/news\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fondazioneunipolis.org\/site\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"News\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/#website\",\"url\":\"https:\/\/www.fondazioneunipolis.org\/site\/\",\"name\":\"Unipolis\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fondazioneunipolis.org\/site\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/#organization\",\"name\":\"Unipolis\",\"url\":\"https:\/\/www.fondazioneunipolis.org\/site\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/07\/logo-fondazione-unipolis-1.svg\",\"contentUrl\":\"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/07\/logo-fondazione-unipolis-1.svg\",\"caption\":\"Unipolis\"},\"image\":{\"@id\":\"https:\/\/www.fondazioneunipolis.org\/site\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"News - Unipolis","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:\/\/www.fondazioneunipolis.org\/site\/news\/","og_locale":"it_IT","og_type":"article","og_title":"News - Unipolis","og_url":"https:\/\/www.fondazioneunipolis.org\/site\/news\/","og_site_name":"Unipolis","article_modified_time":"2026-02-06T12:44:16+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.fondazioneunipolis.org\/site\/news\/","url":"https:\/\/www.fondazioneunipolis.org\/site\/news\/","name":"News - Unipolis","isPartOf":{"@id":"https:\/\/www.fondazioneunipolis.org\/site\/#website"},"datePublished":"2025-09-18T10:39:14+00:00","dateModified":"2026-02-06T12:44:16+00:00","breadcrumb":{"@id":"https:\/\/www.fondazioneunipolis.org\/site\/news\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fondazioneunipolis.org\/site\/news\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.fondazioneunipolis.org\/site\/news\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fondazioneunipolis.org\/site\/"},{"@type":"ListItem","position":2,"name":"News"}]},{"@type":"WebSite","@id":"https:\/\/www.fondazioneunipolis.org\/site\/#website","url":"https:\/\/www.fondazioneunipolis.org\/site\/","name":"Unipolis","description":"","publisher":{"@id":"https:\/\/www.fondazioneunipolis.org\/site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fondazioneunipolis.org\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.fondazioneunipolis.org\/site\/#organization","name":"Unipolis","url":"https:\/\/www.fondazioneunipolis.org\/site\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.fondazioneunipolis.org\/site\/#\/schema\/logo\/image\/","url":"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/07\/logo-fondazione-unipolis-1.svg","contentUrl":"https:\/\/www.fondazioneunipolis.org\/site\/wp-content\/uploads\/2025\/07\/logo-fondazione-unipolis-1.svg","caption":"Unipolis"},"image":{"@id":"https:\/\/www.fondazioneunipolis.org\/site\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/pages\/855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/comments?post=855"}],"version-history":[{"count":18,"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/pages\/855\/revisions"}],"predecessor-version":[{"id":11772,"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/pages\/855\/revisions\/11772"}],"wp:attachment":[{"href":"https:\/\/www.fondazioneunipolis.org\/site\/wp-json\/wp\/v2\/media?parent=855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}