{"id":744,"date":"2025-09-26T13:06:02","date_gmt":"2025-09-26T11:06:02","guid":{"rendered":"https:\/\/www.keyformat.it\/news\/"},"modified":"2025-12-16T16:29:01","modified_gmt":"2025-12-16T14:29:01","slug":"news","status":"publish","type":"page","link":"https:\/\/www.keyformat.it\/en\/news\/","title":{"rendered":"KeyNews"},"content":{"rendered":"\n<div class=\"wp-block-group -mt-36 ml-auto hidden md:block\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full !ml-auto !h-auto !w-5\/12 translate-x-1\/3\"><img decoding=\"async\" src=\"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/10\/rounded-line-pin-k.svg\" alt=\"\" class=\"wp-image-1358\" style=\"object-fit:cover\"\/><\/figure>\n<\/div><\/div>\n\n\n\n    <div id=\"blog-listing-1\" class=\"blog-listing px-5 md:px-24\">\n                <nav class=\"blog-categories-menu flex items-center gap-6 md:gap-10 px-5 py-6 md:py-10 overflow-x-auto overflow-y-hidden hide-scrollbar w-[calc(100%+var(--spacing)*12)] -ml-[var(--spacing)*6]\" aria-label=\"Blog category filters\">\n            <p id=\"blog-filter-title\" class=\"font-sans font-bold uppercase text-lg md:text-xl flex-none\">Filter by:<\/p>\n            <ul class=\"flex items-center gap-6 md:gap-10 list-none m-0 p-0\">\n                            <li class=\"flex-none\">\n                    <button class=\"blog-cat-btn uppercase font-bold cursor-pointer hover:text-primary [&.active]:text-primary [&.active]:underline [&.active]:underline-offset-4 [&.active]:decoration-2 \" data-id=\"605\" aria-pressed=\"false\" aria-label=\"Filter by KeySoul\">\n                        KeySoul                    <\/button>\n                <\/li>\n                            <li class=\"flex-none\">\n                    <button class=\"blog-cat-btn uppercase font-bold cursor-pointer hover:text-primary [&.active]:text-primary [&.active]:underline [&.active]:underline-offset-4 [&.active]:decoration-2 \" data-id=\"168\" aria-pressed=\"false\" aria-label=\"Filter by Sustainability\">\n                        Sustainability                    <\/button>\n                <\/li>\n                        <\/ul>\n        <\/nav>\n                <div id=\"blog-listing-1-loader\" class=\"hidden flex justify-center items-center py-10\" role=\"status\" aria-live=\"polite\">\n            <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary\"><\/div>\n            <span class=\"ml-3 text-primary font-medium\">Loading...<\/span>\n        <\/div>\n        <div id=\"blog-listing-1-post-listing\" class=\"min-h-[50vh] mb-36\" aria-live=\"polite\" aria-atomic=\"false\"><\/div>\n        <div id=\"blog-listing-1-infinite-loader\" class=\"hidden flex justify-center items-center pb-10 -mt-16\">\n            <div class=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary\"><\/div>\n            <span class=\"ml-3 text-primary font-medium\">Loading...<\/span>\n        <\/div>\n    <\/div>\n    <script>\n        const listingRoot = document.getElementById('blog-listing-1');\n        const listingLoader = document.getElementById('blog-listing-1-loader');\n        const listingPosts = document.getElementById('blog-listing-1-post-listing');\n        const listingInfiniteLoader = document.getElementById('blog-listing-1-infinite-loader');\n        const listingAnnouncerId = 'blog-listing-1-filter-announcer';\n\n        let page = 1,\n            categories = [].filter(Boolean).map(Number),\n            loading = false,\n            hasMorePosts = true;\n        let currentLang = 'en'; \/\/ Aggiungi lingua corrente\n\n        function loadPosts(reset = false, infiniteScroll = false) {\n            if (!listingRoot || !listingLoader || !listingPosts || !listingInfiniteLoader) return;\n            \/\/ Se reset \u00e8 true, permetti il caricamento anche se hasMorePosts \u00e8 false\n            if (loading || (!hasMorePosts && !reset)) return;\n            loading = true;\n\n            \/\/ Mostra il loader\n            infiniteScroll ? listingInfiniteLoader.classList.remove('hidden') : listingLoader.classList.remove('hidden');\n\n            if (reset) {\n                page = 1;\n                hasMorePosts = true;\n                listingPosts.innerHTML = '';\n            }\n\n            \/\/ Costruisci la query string: category solo se valorizzato (altrimenti tutte le news)\n            const params = new URLSearchParams({ page, lang: currentLang });\n            if (categories.length > 0) params.set('category', categories.join(','));\n            params.set('_', Date.now().toString());\n            fetch('\/wp-json\/kf\/v1\/blog-listing?' + params.toString(), {\n                cache: 'no-store'\n            })\n                .then(res => {\n                    if (!res.ok) {\n                        throw new Error('Network response was not ok');\n                    }\n                    return res.json();\n                })\n                .then(data => {\n                    if (data && data.html) {\n                        listingPosts.insertAdjacentHTML('beforeend', data.html);\n                        \/\/ Aggiorna hasMorePosts dalla risposta API\n                        hasMorePosts = data.hasMore !== undefined ? data.hasMore : false;\n                    } else {\n                        hasMorePosts = false;\n                    }\n                    page++;\n                    loading = false;\n                    \/\/ Nascondi il loader\n                    infiniteScroll ? listingInfiniteLoader.classList.add('hidden') : listingLoader.classList.add('hidden');\n                })\n                .catch(error => {\n                    console.error('Error loading posts:', error);\n                    loading = false;\n                    infiniteScroll ? listingInfiniteLoader.classList.add('hidden') : listingLoader.classList.add('hidden');\n                });\n        }\n        \/\/ Helper function to announce changes to screen readers\n        function announceBlogFilterChange(message) {\n            let announcer = document.getElementById(listingAnnouncerId);\n            if (!announcer) {\n                announcer = document.createElement('div');\n                announcer.id = listingAnnouncerId;\n                announcer.className = 'sr-only';\n                announcer.setAttribute('aria-live', 'polite');\n                announcer.setAttribute('aria-atomic', 'true');\n                listingRoot.appendChild(announcer);\n            }\n            announcer.textContent = message;\n        }\n\n        \/\/ Category filter button management (selezione multipla al click)\n        listingRoot.querySelectorAll('.blog-cat-btn').forEach(btn => {\n            btn.onclick = function() {\n                const catId = parseInt(this.dataset.id);\n                const isPressed = this.getAttribute('aria-pressed') === 'true';\n\n                \/\/ Toggle active state\n                this.classList.toggle('active');\n                this.setAttribute('aria-pressed', !isPressed);\n\n                \/\/ Update categories array\n                if (!isPressed) {\n                    if (!categories.includes(catId)) categories.push(catId);\n                } else {\n                    categories = categories.filter(id => id !== catId);\n                }\n\n                const catName = this.textContent.trim();\n                const action = !isPressed ? 'attivato' : 'disattivato';\n                announceBlogFilterChange(`Filtro ${catName} ${action}. Caricamento articoli in corso...`);\n\n                page = 1;\n                hasMorePosts = true;\n                loadPosts(true);\n            };\n\n            \/\/ Add keyboard support (Enter and Space)\n            btn.addEventListener('keydown', function(e) {\n                if (e.key === 'Enter' || e.key === ' ') {\n                    e.preventDefault();\n                    this.click();\n                }\n            });\n        });\n        let lastScrollTop = 0;\n        window.addEventListener('scroll', function() {\n            let currentScrollTop = window.scrollY || document.documentElement.scrollTop;\n\n            \/\/ Verifica se si sta scrollando verso il basso e se ci sono pi\u00f9 post\n            if (currentScrollTop > lastScrollTop && hasMorePosts) {\n                if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 300) {\n                    console.log('loadPosts');\n                    loadPosts(false, true);\n                }\n            }\n\n            lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;\n        });\n        loadPosts();\n    <\/script>\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-744","page","type-page","status-publish"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Keyformat | Insights on AI, branding and digital sustainability<\/title>\n<meta name=\"description\" content=\"Trends and news on artificial intelligence, marketing and digital sustainability. Read Keyformat&#039;s articles.\" \/>\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.keyformat.it\/en\/news\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Keyformat | Insights on AI, branding and digital sustainability\" \/>\n<meta property=\"og:description\" content=\"Trends and news on artificial intelligence, marketing and digital sustainability. Read Keyformat&#039;s articles.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.keyformat.it\/en\/news\/\" \/>\n<meta property=\"og:site_name\" content=\"Keyformat\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-16T14:29:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/12\/ShareIMG.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/\",\"url\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/\",\"name\":\"Keyformat | Insights on AI, branding and digital sustainability\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.keyformat.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/rounded-line-pin-k.svg\",\"datePublished\":\"2025-09-26T11:06:02+00:00\",\"dateModified\":\"2025-12-16T14:29:01+00:00\",\"description\":\"Trends and news on artificial intelligence, marketing and digital sustainability. Read Keyformat's articles.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.keyformat.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/rounded-line-pin-k.svg\",\"contentUrl\":\"https:\\\/\\\/www.keyformat.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/rounded-line-pin-k.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/news\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KeyNews\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/\",\"name\":\"Keyformat\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/#organization\",\"name\":\"Keyformat\",\"url\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.keyformat.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/keyformat-logotype.svg\",\"contentUrl\":\"https:\\\/\\\/www.keyformat.it\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/keyformat-logotype.svg\",\"caption\":\"Keyformat\"},\"image\":{\"@id\":\"https:\\\/\\\/www.keyformat.it\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Keyformat | Insights on AI, branding and digital sustainability","description":"Trends and news on artificial intelligence, marketing and digital sustainability. Read Keyformat's articles.","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.keyformat.it\/en\/news\/","og_locale":"en_US","og_type":"article","og_title":"Keyformat | Insights on AI, branding and digital sustainability","og_description":"Trends and news on artificial intelligence, marketing and digital sustainability. Read Keyformat's articles.","og_url":"https:\/\/www.keyformat.it\/en\/news\/","og_site_name":"Keyformat","article_modified_time":"2025-12-16T14:29:01+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/12\/ShareIMG.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.keyformat.it\/en\/news\/","url":"https:\/\/www.keyformat.it\/en\/news\/","name":"Keyformat | Insights on AI, branding and digital sustainability","isPartOf":{"@id":"https:\/\/www.keyformat.it\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.keyformat.it\/en\/news\/#primaryimage"},"image":{"@id":"https:\/\/www.keyformat.it\/en\/news\/#primaryimage"},"thumbnailUrl":"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/10\/rounded-line-pin-k.svg","datePublished":"2025-09-26T11:06:02+00:00","dateModified":"2025-12-16T14:29:01+00:00","description":"Trends and news on artificial intelligence, marketing and digital sustainability. Read Keyformat's articles.","breadcrumb":{"@id":"https:\/\/www.keyformat.it\/en\/news\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.keyformat.it\/en\/news\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.keyformat.it\/en\/news\/#primaryimage","url":"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/10\/rounded-line-pin-k.svg","contentUrl":"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/10\/rounded-line-pin-k.svg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.keyformat.it\/en\/news\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.keyformat.it\/en\/"},{"@type":"ListItem","position":2,"name":"KeyNews"}]},{"@type":"WebSite","@id":"https:\/\/www.keyformat.it\/en\/#website","url":"https:\/\/www.keyformat.it\/en\/","name":"Keyformat","description":"","publisher":{"@id":"https:\/\/www.keyformat.it\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.keyformat.it\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.keyformat.it\/en\/#organization","name":"Keyformat","url":"https:\/\/www.keyformat.it\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.keyformat.it\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/10\/keyformat-logotype.svg","contentUrl":"https:\/\/www.keyformat.it\/wp-content\/uploads\/2025\/10\/keyformat-logotype.svg","caption":"Keyformat"},"image":{"@id":"https:\/\/www.keyformat.it\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/pages\/744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/comments?post=744"}],"version-history":[{"count":15,"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/pages\/744\/revisions"}],"predecessor-version":[{"id":2082,"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/pages\/744\/revisions\/2082"}],"wp:attachment":[{"href":"https:\/\/www.keyformat.it\/en\/wp-json\/wp\/v2\/media?parent=744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}