{"id":596,"date":"2026-08-15T16:15:35","date_gmt":"2026-08-15T16:15:35","guid":{"rendered":"https:\/\/idpdrive.org\/?page_id=596"},"modified":"2026-08-16T22:36:59","modified_gmt":"2026-08-16T22:36:59","slug":"blog","status":"publish","type":"page","link":"https:\/\/idpdrive.org\/pt\/blog\/","title":{"rendered":"blog"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"596\" class=\"elementor elementor-596\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-02e84f2 e-con-full e-flex e-con e-parent\" data-id=\"02e84f2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-65af4b5 elementor-widget elementor-widget-html\" data-id=\"65af4b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  BLOG INDEX \u2014 idpdrive.org\r\n  \u2714 100% automatique : va chercher les articles publi\u00e9s via\r\n    l'API REST native de WordPress (wp-json\/wp\/v2\/posts)\r\n  \u2714 Aucun r\u00e9glage WordPress \u00e0 changer, aucun plugin payant requis\r\n  \u2714 Se met \u00e0 jour tout seul d\u00e8s qu'un nouvel article est publi\u00e9\r\n  \u2714 Design coh\u00e9rent avec le reste du site (Sora + DM Sans, #2a8a60)\r\n  \u2714 Responsive mobile\r\n  \u00c0 coller dans un widget HTML Elementor, sur votre page \/blog\/.\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n-->\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Sora:wght@700;800&family=DM+Sans:wght@400;500;600;700&display=swap');\r\n.idp-blog *,.idp-blog *::before,.idp-blog *::after{box-sizing:border-box;margin:0;padding:0}\r\n.idp-blog{\r\n  --g:#2a8a60;--gl:#34b077;--gxl:#e8f5ee;--gd:#1a5c42;\r\n  --ink:#0f1f18;--ink2:#2c3e35;--mu:#6b7f77;\r\n  --bd:#e0ece7;--bg:#f7fcf9;--w:#fff;\r\n  --fh:'Sora',-apple-system,sans-serif;\r\n  --fb:'DM Sans',-apple-system,sans-serif;\r\n  font-family:var(--fb);color:var(--ink);line-height:1.7;\r\n}\r\n.idp-blog a{color:var(--g);text-decoration:none}\r\n.idp-blog img{max-width:100%;display:block}\r\n.idp-blog ul{list-style:none}\r\n\/* HERO *\/\r\n.idp-blog-hero{\r\n  background:linear-gradient(148deg,#060f09 0%,#0a1e12 46%,#12402a 100%);\r\n  padding:72px 24px 56px;text-align:center;position:relative;overflow:hidden;\r\n}\r\n.idp-blog-hero::before{\r\n  content:'';position:absolute;inset:0;pointer-events:none;\r\n  background:radial-gradient(ellipse 60% 50% at 70% 20%,rgba(42,138,96,.18) 0%,transparent 100%);\r\n}\r\n.idp-blog-hero-in{position:relative;z-index:1;max-width:700px;margin:0 auto}\r\n.idp-blog-tag{\r\n  display:inline-flex;align-items:center;gap:6px;font-family:var(--fh);\r\n  font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;\r\n  color:#4ade80;background:rgba(74,222,128,.12);padding:6px 14px;border-radius:99px;\r\n  margin-bottom:14px;border:1px solid rgba(74,222,128,.2);\r\n}\r\n.idp-blog-hero h1{\r\n  font-family:var(--fh);font-weight:800;font-size:clamp(1.8rem,4vw,2.6rem);\r\n  color:#fff;line-height:1.15;margin-bottom:12px;letter-spacing:-.02em;\r\n}\r\n.idp-blog-hero p{color:rgba(255,255,255,.62);font-size:.95rem;max-width:520px;margin:0 auto}\r\n\/* GRID *\/\r\n.idp-blog-main{background:var(--bg);padding:56px 24px 80px}\r\n.idp-blog-wrap{max-width:1120px;margin:0 auto}\r\n.idp-blog-grid{\r\n  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;\r\n}\r\n.idp-blog-card{\r\n  background:var(--w);border:1.5px solid var(--bd);border-radius:14px;\r\n  overflow:hidden;display:flex;flex-direction:column;\r\n  transition:border-color .18s,box-shadow .18s,transform .18s;\r\n}\r\n.idp-blog-card:hover{\r\n  border-color:var(--g);box-shadow:0 10px 30px rgba(42,138,96,.12);transform:translateY(-3px);\r\n}\r\n.idp-blog-card-img{\r\n  width:100%;aspect-ratio:16\/9;background:var(--gxl) center\/cover no-repeat;\r\n  display:flex;align-items:center;justify-content:center;\r\n}\r\n.idp-blog-card-img.placeholder svg{width:40px;height:40px;stroke:var(--g);fill:none;stroke-width:1.6}\r\n.idp-blog-card-body{padding:20px;display:flex;flex-direction:column;flex:1}\r\n.idp-blog-card-date{\r\n  font-family:var(--fh);font-size:.68rem;font-weight:700;letter-spacing:.08em;\r\n  text-transform:uppercase;color:var(--g);margin-bottom:8px;\r\n}\r\n.idp-blog-card-title{\r\n  font-family:var(--fh);font-weight:800;font-size:1.02rem;color:var(--ink);\r\n  line-height:1.35;margin-bottom:10px;\r\n}\r\n.idp-blog-card-title a{color:inherit}\r\n.idp-blog-card-title a:hover{color:var(--g)}\r\n.idp-blog-card-excerpt{\r\n  font-size:.85rem;color:var(--mu);line-height:1.7;flex:1;margin-bottom:14px;\r\n}\r\n.idp-blog-card-excerpt p{margin:0}\r\n.idp-blog-card-read{\r\n  font-family:var(--fh);font-weight:700;font-size:.8rem;color:var(--g);\r\n  display:inline-flex;align-items:center;gap:5px;\r\n}\r\n.idp-blog-card-read svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.5}\r\n\/* LOADING \/ EMPTY \/ ERROR STATES *\/\r\n.idp-blog-state{\r\n  grid-column:1\/-1;text-align:center;padding:60px 20px;\r\n  background:var(--w);border:1.5px solid var(--bd);border-radius:14px;\r\n}\r\n.idp-blog-state svg{width:44px;height:44px;margin:0 auto 16px;stroke:var(--mu);fill:none;stroke-width:1.5}\r\n.idp-blog-state h3{font-family:var(--fh);font-weight:700;font-size:1.05rem;color:var(--ink);margin-bottom:6px}\r\n.idp-blog-state p{color:var(--mu);font-size:.86rem}\r\n.idp-blog-spin{\r\n  width:32px;height:32px;border:3px solid var(--bd);border-top-color:var(--g);\r\n  border-radius:50%;margin:0 auto 16px;animation:idpBlogSpin .8s linear infinite;\r\n}\r\n@keyframes idpBlogSpin{to{transform:rotate(360deg)}}\r\n\/* LOAD MORE *\/\r\n.idp-blog-more{text-align:center;margin-top:40px}\r\n.idp-blog-more-btn{\r\n  font-family:var(--fh);font-weight:700;font-size:.88rem;color:var(--g);\r\n  background:var(--w);border:1.5px solid var(--bd);border-radius:99px;\r\n  padding:12px 28px;cursor:pointer;transition:border-color .18s,background .18s;\r\n}\r\n.idp-blog-more-btn:hover{border-color:var(--g);background:var(--gxl)}\r\n.idp-blog-more-btn:disabled{opacity:.5;cursor:default}\r\n\/* RESPONSIVE *\/\r\n@media(max-width:900px){\r\n  .idp-blog-grid{grid-template-columns:1fr 1fr;gap:18px}\r\n}\r\n@media(max-width:600px){\r\n  .idp-blog-hero{padding:48px 16px 40px}\r\n  .idp-blog-hero h1{font-size:1.5rem}\r\n  .idp-blog-main{padding:40px 16px 56px}\r\n  .idp-blog-grid{grid-template-columns:1fr;gap:16px}\r\n  .idp-blog-card-body{padding:16px}\r\n}\r\n<\/style>\r\n<section class=\"idp-blog\">\r\n  <div class=\"idp-blog-hero\">\r\n    <div class=\"idp-blog-hero-in\">\r\n      <div class=\"idp-blog-tag\">IDP Drive Blog<\/div>\r\n      <h1>Guides for Driving Abroad<\/h1>\r\n      <p>Country-by-country IDP requirements, rental car tips, and everything you need to know before you drive internationally.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"idp-blog-main\">\r\n    <div class=\"idp-blog-wrap\">\r\n      <div class=\"idp-blog-grid\" id=\"idp-blog-grid\">\r\n        <div class=\"idp-blog-state\" id=\"idp-blog-loading\">\r\n          <div class=\"idp-blog-spin\"><\/div>\r\n          <h3>Loading articles\u2026<\/h3>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"idp-blog-more\" id=\"idp-blog-more\" style=\"display:none\">\r\n        <button class=\"idp-blog-more-btn\" id=\"idp-blog-more-btn\">Load more articles<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n  \/\/ Point this at your own site's REST API root if different from idpdrive.org\r\n  var API_BASE = \"https:\/\/idpdrive.org\/wp-json\/wp\/v2\/posts\";\r\n  var PER_PAGE = 9;\r\n  var page = 1;\r\n  var totalPages = 1;\r\n  var grid = document.getElementById(\"idp-blog-grid\");\r\n  var loadingEl = document.getElementById(\"idp-blog-loading\");\r\n  var moreWrap = document.getElementById(\"idp-blog-more\");\r\n  var moreBtn = document.getElementById(\"idp-blog-more-btn\");\r\n\r\n  function escapeHtml(str){\r\n    var div = document.createElement(\"div\");\r\n    div.textContent = str;\r\n    return div.innerHTML;\r\n  }\r\n\r\n  function stripTags(html){\r\n    var div = document.createElement(\"div\");\r\n    div.innerHTML = html;\r\n    return (div.textContent || div.innerText || \"\").trim();\r\n  }\r\n\r\n  function formatDate(iso){\r\n    var d = new Date(iso);\r\n    if(isNaN(d)) return \"\";\r\n    return d.toLocaleDateString(\"en-US\",{month:\"short\",day:\"numeric\",year:\"numeric\"});\r\n  }\r\n\r\n  function placeholderImg(){\r\n    return '<div class=\"idp-blog-card-img placeholder\"><svg viewBox=\"0 0 24 24\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><\/svg><\/div>';\r\n  }\r\n\r\n  function renderCard(post){\r\n    var title = post.title && post.title.rendered ? post.title.rendered : \"Untitled\";\r\n    var excerptRaw = post.excerpt && post.excerpt.rendered ? post.excerpt.rendered : \"\";\r\n    var excerptText = stripTags(excerptRaw);\r\n    if(excerptText.length > 130) excerptText = excerptText.slice(0,130).trim() + \"\u2026\";\r\n    var link = post.link || \"#\";\r\n    var dateStr = formatDate(post.date);\r\n\r\n    var imgUrl = null;\r\n    if(post._embedded && post._embedded[\"wp:featuredmedia\"] && post._embedded[\"wp:featuredmedia\"][0]){\r\n      imgUrl = post._embedded[\"wp:featuredmedia\"][0].source_url;\r\n    }\r\n    var imgHtml = imgUrl\r\n      ? '<div class=\"idp-blog-card-img\" style=\"background-image:url(\\'' + imgUrl.replace(\/'\/g,\"%27\") + '\\')\"><\/div>'\r\n      : placeholderImg();\r\n\r\n    var card = document.createElement(\"article\");\r\n    card.className = \"idp-blog-card\";\r\n    card.innerHTML =\r\n      imgHtml +\r\n      '<div class=\"idp-blog-card-body\">' +\r\n        '<div class=\"idp-blog-card-date\">' + escapeHtml(dateStr) + '<\/div>' +\r\n        '<h2 class=\"idp-blog-card-title\"><a href=\"' + link + '\">' + title + '<\/a><\/h2>' +\r\n        '<div class=\"idp-blog-card-excerpt\"><p>' + escapeHtml(excerptText) + '<\/p><\/div>' +\r\n        '<a class=\"idp-blog-card-read\" href=\"' + link + '\">Read article' +\r\n          '<svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>' +\r\n        '<\/a>' +\r\n      '<\/div>';\r\n    return card;\r\n  }\r\n\r\n  function renderEmpty(){\r\n    grid.innerHTML =\r\n      '<div class=\"idp-blog-state\">' +\r\n        '<svg viewBox=\"0 0 24 24\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><\/svg>' +\r\n        '<h3>New articles coming soon<\/h3>' +\r\n        '<p>We are working on our first travel guides. Check back shortly.<\/p>' +\r\n      '<\/div>';\r\n  }\r\n\r\n  function renderError(){\r\n    grid.innerHTML =\r\n      '<div class=\"idp-blog-state\">' +\r\n        '<svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>' +\r\n        '<h3>Articles could not be loaded<\/h3>' +\r\n        '<p>Please refresh the page, or visit again in a moment.<\/p>' +\r\n      '<\/div>';\r\n  }\r\n\r\n  function loadPosts(pageNum){\r\n    var url = API_BASE + \"?per_page=\" + PER_PAGE + \"&page=\" + pageNum + \"&_embed\";\r\n    moreBtn.disabled = true;\r\n    moreBtn.textContent = \"Loading\u2026\";\r\n\r\n    fetch(url)\r\n      .then(function(res){\r\n        totalPages = parseInt(res.headers.get(\"X-WP-TotalPages\") || \"1\", 10);\r\n        if(!res.ok){\r\n          if(res.status === 400 && pageNum > 1){\r\n            \/\/ past last page\r\n            return [];\r\n          }\r\n          throw new Error(\"HTTP \" + res.status);\r\n        }\r\n        return res.json();\r\n      })\r\n      .then(function(posts){\r\n        if(loadingEl && loadingEl.parentNode) loadingEl.remove();\r\n\r\n        if(pageNum === 1 && (!posts || posts.length === 0)){\r\n          renderEmpty();\r\n          moreWrap.style.display = \"none\";\r\n          return;\r\n        }\r\n\r\n        posts.forEach(function(post){\r\n          grid.appendChild(renderCard(post));\r\n        });\r\n\r\n        if(pageNum < totalPages){\r\n          moreWrap.style.display = \"block\";\r\n          moreBtn.disabled = false;\r\n          moreBtn.textContent = \"Load more articles\";\r\n        } else {\r\n          moreWrap.style.display = \"none\";\r\n        }\r\n      })\r\n      .catch(function(){\r\n        if(pageNum === 1){\r\n          renderError();\r\n        } else {\r\n          moreBtn.disabled = false;\r\n          moreBtn.textContent = \"Load more articles\";\r\n        }\r\n      });\r\n  }\r\n\r\n  moreBtn.addEventListener(\"click\", function(){\r\n    page += 1;\r\n    loadPosts(page);\r\n  });\r\n\r\n  loadPosts(page);\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>IDP Drive Blog Guides for Driving Abroad Country-by-country IDP requirements, rental car tips, and everything you need to know before you drive internationally. Loading articles\u2026 Load more articles<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-596","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/pages\/596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/comments?post=596"}],"version-history":[{"count":10,"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/pages\/596\/revisions"}],"predecessor-version":[{"id":740,"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/pages\/596\/revisions\/740"}],"wp:attachment":[{"href":"https:\/\/idpdrive.org\/pt\/wp-json\/wp\/v2\/media?parent=596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}