{"id":231738,"date":"2026-04-24T21:50:56","date_gmt":"2026-04-24T21:50:56","guid":{"rendered":"https:\/\/mariof.es\/google-reviews-plugin\/"},"modified":"2026-04-24T21:56:42","modified_gmt":"2026-04-24T21:56:42","slug":"google-reviews-plugin","status":"publish","type":"page","link":"https:\/\/mariof.es\/es\/google-reviews-plugin\/","title":{"rendered":"Plugin Google Business Reviews"},"content":{"rendered":"\n<style>\n.gr-page { max-width: 1140px !important; margin: 0 auto !important; padding: 20px 20px 60px !important; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif !important; color: #1f2937 !important; }\n.gr-page a { color: #2563eb !important; }\n.gr-lead { font-size: 18px !important; line-height: 1.7 !important; color: #374151 !important; max-width: 780px !important; margin: 0 auto 40px !important; text-align: center !important; }\n.gr-lead strong { color: #111827 !important; }\n.gr-pill-row { display: flex !important; gap: 10px !important; justify-content: center !important; flex-wrap: wrap !important; margin: 0 0 30px !important; }\n.gr-pill { display: inline-block !important; padding: 6px 14px !important; border-radius: 999px !important; font-size: 13px !important; font-weight: 600 !important; background: #d1fae5 !important; color: #065f46 !important; }\n.gr-pill--v { background: #dbeafe !important; color: #1e40af !important; }\n.gr-pill--gpl { background: #f3f4f6 !important; color: #374151 !important; }\n.gr-section-title { font-size: 30px !important; font-weight: 800 !important; text-align: center !important; margin: 0 0 12px !important; color: #111827 !important; letter-spacing: -0.01em !important; }\n.gr-section-sub { text-align: center !important; color: #6b7280 !important; font-size: 17px !important; max-width: 640px !important; margin: 0 auto 48px !important; line-height: 1.6 !important; }\n.gr-features { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important; gap: 24px !important; margin: 0 0 80px !important; }\n.gr-feature { background: #fff !important; border: 1px solid #e5e7eb !important; border-radius: 16px !important; padding: 28px !important; }\n.gr-feature__icon { font-size: 32px !important; line-height: 1 !important; margin-bottom: 14px !important; }\n.gr-feature__title { font-size: 18px !important; font-weight: 700 !important; margin: 0 0 8px !important; color: #111827 !important; }\n.gr-feature__desc { color: #4b5563 !important; font-size: 15px !important; line-height: 1.55 !important; margin: 0 !important; }\n.gr-tos { background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%) !important; border: 1px solid #a7f3d0 !important; border-radius: 20px !important; padding: 40px !important; margin: 0 0 80px !important; }\n.gr-tos__badge { display: inline-block !important; background: #065f46 !important; color: #fff !important; padding: 6px 14px !important; border-radius: 999px !important; font-size: 12px !important; font-weight: 700 !important; letter-spacing: 0.05em !important; text-transform: uppercase !important; margin-bottom: 16px !important; }\n.gr-tos h2 { color: #064e3b !important; font-size: 26px !important; font-weight: 800 !important; margin: 0 0 12px !important; }\n.gr-tos p { color: #065f46 !important; font-size: 16px !important; line-height: 1.65 !important; margin: 0 0 12px !important; }\n.gr-tos ul { color: #065f46 !important; font-size: 15px !important; line-height: 1.75 !important; padding-left: 22px !important; margin: 10px 0 0 !important; }\n.gr-tos code { background: rgba(6,78,59,0.1) !important; padding: 2px 6px !important; border-radius: 4px !important; font-size: 14px !important; }\n.gr-compare { margin: 0 0 80px !important; overflow-x: auto !important; }\n.gr-compare table { width: 100% !important; border-collapse: collapse !important; background: #fff !important; border-radius: 12px !important; overflow: hidden !important; box-shadow: 0 1px 3px rgba(0,0,0,0.06) !important; }\n.gr-compare th, .gr-compare td { padding: 14px 18px !important; text-align: left !important; border-bottom: 1px solid #e5e7eb !important; font-size: 15px !important; }\n.gr-compare th { background: #f9fafb !important; font-weight: 700 !important; color: #111827 !important; }\n.gr-compare td.gr-yes { color: #065f46 !important; font-weight: 600 !important; }\n.gr-compare td.gr-no  { color: #991b1b !important; }\n.gr-compare td.gr-partial { color: #92400e !important; }\n.gr-compare tr:last-child td { border-bottom: none !important; }\n.gr-compare .gr-col-mine { background: #eff6ff !important; }\n.gr-shortcodes { background: #0f172a !important; border-radius: 16px !important; padding: 32px !important; margin: 0 0 80px !important; color: #e2e8f0 !important; }\n.gr-shortcodes h3 { color: #fff !important; margin: 0 0 6px !important; font-size: 14px !important; font-weight: 600 !important; text-transform: uppercase !important; letter-spacing: 0.05em !important; }\n.gr-shortcodes h3:not(:first-child) { margin-top: 24px !important; }\n.gr-shortcodes p { color: #94a3b8 !important; font-size: 14px !important; margin: 0 0 10px !important; }\n.gr-shortcodes pre { background: #1e293b !important; padding: 14px 18px !important; border-radius: 8px !important; margin: 0 !important; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important; font-size: 14px !important; color: #e2e8f0 !important; overflow-x: auto !important; }\n.gr-faq { margin: 0 0 80px !important; }\n.gr-faq__item { background: #fff !important; border: 1px solid #e5e7eb !important; border-radius: 12px !important; padding: 24px 28px !important; margin-bottom: 14px !important; }\n.gr-faq__q { font-size: 18px !important; font-weight: 700 !important; color: #111827 !important; margin: 0 0 10px !important; line-height: 1.4 !important; }\n.gr-faq__a { color: #4b5563 !important; font-size: 15px !important; line-height: 1.7 !important; margin: 0 !important; }\n.gr-faq__a code { background: #f3f4f6 !important; padding: 2px 6px !important; border-radius: 4px !important; font-size: 14px !important; }\n.gr-download { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; border-radius: 24px !important; padding: 50px 40px !important; text-align: center !important; color: #fff !important; margin: 0 0 60px !important; }\n.gr-download h2 { color: #fff !important; font-size: 32px !important; font-weight: 800 !important; margin: 0 0 14px !important; }\n.gr-download &gt; p { color: rgba(255,255,255,0.9) !important; font-size: 17px !important; max-width: 580px !important; margin: 0 auto 28px !important; line-height: 1.6 !important; }\n.gr-help { background: #fff !important; border: 1px solid #e5e7eb !important; border-radius: 20px !important; padding: 40px !important; text-align: center !important; margin: 0 0 40px !important; }\n.gr-help h2 { font-size: 26px !important; font-weight: 800 !important; margin: 0 0 12px !important; color: #111827 !important; }\n.gr-help__services { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important; gap: 20px !important; margin: 30px 0 !important; text-align: left !important; }\n.gr-help__service { padding: 20px !important; background: #f9fafb !important; border-radius: 12px !important; }\n.gr-help__service strong { display: block !important; color: #111827 !important; font-size: 16px !important; margin-bottom: 6px !important; }\n.gr-help__service small { color: #6b7280 !important; font-size: 14px !important; line-height: 1.5 !important; display: block !important; }\n.gr-help__price { display: inline-block !important; background: #dbeafe !important; color: #1e40af !important; padding: 3px 10px !important; border-radius: 999px !important; font-size: 12px !important; font-weight: 700 !important; margin-top: 8px !important; }\n.gr-btn { display: inline-block !important; padding: 14px 36px !important; border-radius: 999px !important; font-weight: 700 !important; text-decoration: none !important; font-size: 16px !important; transition: transform 0.2s !important; }\n.gr-btn--outline { background: transparent !important; color: #2563eb !important; border: 2px solid #2563eb !important; }\n.gr-btn--outline:hover { background: #2563eb !important; color: #fff !important; }\n.gr-back { text-align: center !important; margin: 0 0 40px !important; }\n.gr-back a { color: #6b7280 !important; font-size: 14px !important; text-decoration: none !important; }\n.gr-back a:hover { color: #2563eb !important; }\n@media (max-width: 768px) {\n  .gr-section-title { font-size: 24px !important; }\n  .gr-feature, .gr-help, .gr-tos, .gr-faq__item { padding: 24px !important; }\n  .gr-tos h2 { font-size: 22px !important; }\n  .gr-shortcodes { padding: 20px !important; }\n  .gr-download { padding: 40px 24px !important; }\n  .gr-download h2 { font-size: 26px !important; }\n  .gr-lead { font-size: 16px !important; }\n}\n<\/style>\n\n<div class=\"gr-page\">\n\n  <p class=\"gr-lead\"><strong>Plugin Google Business Reviews<\/strong> es un plugin WordPress gratuito que muestra las rese\u00f1as de Google Business en cualquier sitio WordPress mediante el shortcode <code>[google_reviews]<\/code>. Cachea las rese\u00f1as en una base de datos local, las refresca autom\u00e1ticamente con cron diario, y cumple \u00edntegramente con los T\u00e9rminos de Servicio de Google Places API gracias a un sistema de limpieza de 30 d\u00edas.<\/p>\n\n  <div class=\"gr-pill-row\">\n    <span class=\"gr-pill\">&#x2705; Beta gratuita<\/span>\n    <span class=\"gr-pill gr-pill--v\">v2.1.0<\/span>\n    <span class=\"gr-pill gr-pill--gpl\">GPL2<\/span>\n  <\/div>\n\n  <h2 class=\"gr-section-title\">Todo lo que necesitas<\/h2>\n  <p class=\"gr-section-sub\">Un plugin ligero sin dependencias de servicios externos, construido para cumplir con los t\u00e9rminos de Google desde el primer d\u00eda.<\/p>\n\n  <section class=\"gr-features\">\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f3f7;&#xfe0f;<\/div><h3 class=\"gr-feature__title\">Shortcode universal<\/h3><p class=\"gr-feature__desc\"><code>[google_reviews]<\/code> funciona en cualquier p\u00e1gina, entrada o widget. Sin bloques Gutenberg personalizados ni page builders obligatorios.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f4d0;<\/div><h3 class=\"gr-feature__title\">3 layouts<\/h3><p class=\"gr-feature__desc\">Grid (1\u20134 columnas), carrusel con autoplay y navegaci\u00f3n, o lista vertical cl\u00e1sica. Cambia con un solo atributo.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f4be;<\/div><h3 class=\"gr-feature__title\">Cache en base de datos<\/h3><p class=\"gr-feature__desc\">Las rese\u00f1as se guardan localmente y se refrescan en cada sync. Carga instant\u00e1nea sin llamadas repetidas a la API.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f6e1;&#xfe0f;<\/div><h3 class=\"gr-feature__title\">Cumple los ToS<\/h3><p class=\"gr-feature__desc\">Limpieza autom\u00e1tica a 30 d\u00edas (configurable 1\u201330). Las rese\u00f1as que Google deja de devolver se eliminan autom\u00e1ticamente.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f504;<\/div><h3 class=\"gr-feature__title\">Sync autom\u00e1tica<\/h3><p class=\"gr-feature__desc\">Cron diario m\u00e1s bot\u00f3n manual \u00abSync Now\u00bb. Throttle de 1 hora que evita llamadas accidentales a la API.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f50d;<\/div><h3 class=\"gr-feature__title\">Filtros potentes<\/h3><p class=\"gr-feature__desc\">Rating m\u00ednimo, solo rese\u00f1as con texto, ordenaci\u00f3n por fecha o puntuaci\u00f3n. Todo configurable por shortcode o globalmente.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f441;&#xfe0f;<\/div><h3 class=\"gr-feature__title\">Gestor de rese\u00f1as<\/h3><p class=\"gr-feature__desc\">Oculta o elimina rese\u00f1as individuales desde el admin sin romper la sincronizaci\u00f3n. \u00datil para rese\u00f1as problem\u00e1ticas.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f310;<\/div><h3 class=\"gr-feature__title\">Tiempos localizados<\/h3><p class=\"gr-feature__desc\">\u00abhace 2 semanas\u00bb, \u00ab2 weeks ago\u00bb, \u00abil y a 2 semaines\u00bb \u2014 usa las traducciones nativas de WordPress.<\/p><\/div>\n    <div class=\"gr-feature\"><div class=\"gr-feature__icon\">&#x1f319;<\/div><h3 class=\"gr-feature__title\">Claro y oscuro<\/h3><p class=\"gr-feature__desc\">Dos temas listos para usar. Variables CSS que facilitan la personalizaci\u00f3n desde tu propia hoja de estilos.<\/p><\/div>\n  <\/section>\n\n  <section class=\"gr-tos\">\n    <span class=\"gr-tos__badge\">Diferenciador clave<\/span>\n    <h2>Cumple con los T\u00e9rminos de Google Places API<\/h2>\n    <p>La mayor\u00eda de plugins que cachean rese\u00f1as de Google <strong>incumplen los T\u00e9rminos de Servicio sin saberlo<\/strong>: Google solo permite cachear datos de rese\u00f1as hasta 30 d\u00edas.<\/p>\n    <p>El Plugin Google Business Reviews incluye el cumplimiento de f\u00e1brica:<\/p>\n    <ul>\n      <li>Cada sync refresca <code>last_seen<\/code> en las rese\u00f1as que Google sigue devolviendo<\/li>\n      <li>Un cron diario elimina las rese\u00f1as con <code>last_seen<\/code> anterior a la ventana de retenci\u00f3n<\/li>\n      <li>Retenci\u00f3n configurable entre 1 y 30 d\u00edas (tope m\u00e1ximo de 30 forzado en el c\u00f3digo)<\/li>\n      <li>Filtro <code>gr_cleanup_retention_days<\/code> para integradores que necesiten m\u00e1s control<\/li>\n    <\/ul>\n  <\/section>\n\n  <section class=\"gr-compare\">\n    <h2 class=\"gr-section-title\">Comparativa<\/h2>\n    <p class=\"gr-section-sub\">Plugin Google Business Reviews frente a las alternativas m\u00e1s habituales.<\/p>\n    <table>\n      <thead>\n        <tr>\n          <th>Caracter\u00edstica<\/th>\n          <th>iframe de Google Maps<\/th>\n          <th>Plugins freemium t\u00edpicos<\/th>\n          <th class=\"gr-col-mine\">Plugin Google Business Reviews<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody>\n        <tr><td>Personalizaci\u00f3n visual<\/td><td class=\"gr-no\">\u2717 Ninguna<\/td><td class=\"gr-partial\">Limitada \/ de pago<\/td><td class=\"gr-yes gr-col-mine\">\u2713 Completa<\/td><\/tr>\n        <tr><td>Compatible con cualquier tema<\/td><td class=\"gr-partial\">Depende<\/td><td class=\"gr-partial\">Conflictos frecuentes<\/td><td class=\"gr-yes gr-col-mine\">\u2713<\/td><\/tr>\n        <tr><td>M\u00e1s de 5 rese\u00f1as<\/td><td class=\"gr-no\">\u2717<\/td><td class=\"gr-partial\">Solo en planes de pago<\/td><td class=\"gr-yes gr-col-mine\">\u2713 Acumula en BD<\/td><\/tr>\n        <tr><td>Filtros por rating<\/td><td class=\"gr-no\">\u2717<\/td><td class=\"gr-partial\">Premium<\/td><td class=\"gr-yes gr-col-mine\">\u2713<\/td><\/tr>\n        <tr><td>Cumplimiento ToS (30 d\u00edas)<\/td><td class=\"gr-yes\">\u2713 Nativo<\/td><td class=\"gr-no\">\u2717 Normalmente incumplido<\/td><td class=\"gr-yes gr-col-mine\">\u2713 Expl\u00edcito<\/td><\/tr>\n        <tr><td>Servicios externos<\/td><td class=\"gr-yes\">Solo Google<\/td><td class=\"gr-no\">Proxies del vendor<\/td><td class=\"gr-yes gr-col-mine\">\u2713 Tu API, tus datos<\/td><\/tr>\n        <tr><td>Precio<\/td><td>Gratis<\/td><td>29\u2013199 \u20ac\/a\u00f1o<\/td><td class=\"gr-yes gr-col-mine\">Gratis<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/section>\n\n  <section class=\"gr-shortcodes\">\n    <h2 style=\"color:#fff;margin:0 0 8px;font-size:24px;font-weight:800\">Shortcode<\/h2>\n    <p style=\"margin-bottom:24px\">Copia, pega y ajusta los atributos a tus necesidades.<\/p>\n\n    <h3>Uso b\u00e1sico<\/h3>\n    <pre>[google_reviews]<\/pre>\n\n    <h3>Grid con atributos<\/h3>\n    <p>Grid de 3 columnas, 12 rese\u00f1as, m\u00ednimo 4 estrellas.<\/p>\n    <pre>[google_reviews layout=\"grid\" columns=\"3\" limit=\"12\" min_rating=\"4\"]<\/pre>\n\n    <h3>Carrusel, solo rese\u00f1as con texto<\/h3>\n    <pre>[google_reviews layout=\"carousel\" require_text=\"yes\" order=\"newest\"]<\/pre>\n\n    <h3>Lista en tema oscuro<\/h3>\n    <pre>[google_reviews layout=\"list\" theme=\"dark\" limit=\"20\"]<\/pre>\n  <\/section>\n\n  <section class=\"gr-faq\">\n    <h2 class=\"gr-section-title\">Preguntas frecuentes<\/h2>\n    <p class=\"gr-section-sub\">Respuestas r\u00e1pidas sobre el Plugin Google Business Reviews.<\/p>\n\n    <div class=\"gr-faq__item\"><h3 class=\"gr-faq__q\">\u00bfQu\u00e9 es el Plugin Google Business Reviews?<\/h3><p class=\"gr-faq__a\">Plugin Google Business Reviews es un plugin WordPress gratuito que muestra las rese\u00f1as de Google Business en cualquier sitio WordPress mediante el shortcode <code>[google_reviews]<\/code>. Cachea las rese\u00f1as en una base de datos local, las refresca con cron diario y elimina autom\u00e1ticamente las rese\u00f1as obsoletas tras 30 d\u00edas para cumplir los T\u00e9rminos de Google Places API.<\/p><\/div>\n    <div class=\"gr-faq__item\"><h3 class=\"gr-faq__q\">\u00bfEs gratuito el Plugin Google Business Reviews?<\/h3><p class=\"gr-faq__a\">S\u00ed. El plugin es 100% gratuito y con licencia GPL2. No hay versiones de pago, ni funcionalidades premium bloqueadas, ni suscripciones de vendor. Solo necesitas una API key de Google Cloud con Places API habilitado (que tiene una generosa cuota gratuita de Google).<\/p><\/div>\n    <div class=\"gr-faq__item\"><h3 class=\"gr-faq__q\">\u00bfCumple el Plugin Google Business Reviews con los T\u00e9rminos de Google Places API?<\/h3><p class=\"gr-faq__a\">S\u00ed. Los T\u00e9rminos de Google Places API exigen que los datos cacheados de rese\u00f1as se refresquen o eliminen en 30 d\u00edas. El plugin refresca <code>last_seen<\/code> en cada sync en las rese\u00f1as que Google sigue devolviendo, y un cron de limpieza diario elimina cualquier rese\u00f1a con <code>last_seen<\/code> anterior a la ventana de retenci\u00f3n configurada (por defecto 30 d\u00edas, tope m\u00e1ximo forzado a 30 en el c\u00f3digo).<\/p><\/div>\n    <div class=\"gr-faq__item\"><h3 class=\"gr-faq__q\">\u00bfPuede el Plugin Google Business Reviews mostrar m\u00e1s de 5 rese\u00f1as?<\/h3><p class=\"gr-faq__a\">S\u00ed. La API de Google Places solo devuelve 5 rese\u00f1as por llamada, pero el plugin acumula rese\u00f1as en una base de datos local con el tiempo llamando a la API con los \u00f3rdenes \u00abnewest\u00bb y \u00abmost_relevant\u00bb. A medida que Google rota las rese\u00f1as que devuelve, tu base de datos crece hasta la ventana de retenci\u00f3n de 30 d\u00edas.<\/p><\/div>\n    <div class=\"gr-faq__item\"><h3 class=\"gr-faq__q\">\u00bfFunciona el Plugin Google Business Reviews con cualquier tema WordPress?<\/h3><p class=\"gr-faq__a\">S\u00ed. El plugin incluye sus propias hojas de estilo y usa salida shortcode est\u00e1ndar, as\u00ed que funciona con cualquier tema WordPress bien programado. Los temas claro y oscuro incluidos se pueden personalizar mediante variables CSS, o puedes sobrescribir el archivo <code>templates\/reviews.php<\/code> desde tu tema.<\/p><\/div>\n    <div class=\"gr-faq__item\"><h3 class=\"gr-faq__q\">\u00bfC\u00f3mo instalo el Plugin Google Business Reviews?<\/h3><p class=\"gr-faq__a\">Solicita el ZIP a trav\u00e9s del formulario de descarga, s\u00fabelo a <code>\/wp-content\/plugins\/<\/code> (o inst\u00e1lalo desde el admin de WordPress), act\u00edvalo y luego ve a <strong>Ajustes \u2192 Google Reviews<\/strong> e introduce tu Google API key y tu Place ID. Pulsa <strong>Sync Now<\/strong> para descargar el primer lote de rese\u00f1as. Usa <code>[google_reviews]<\/code> en cualquier p\u00e1gina, entrada o widget.<\/p><\/div>\n  <\/section>\n\n  <section class=\"gr-download\">\n    <h2>&#x1f4e5; Descarga gratuita<\/h2>\n    <p>Obt\u00e9n el plugin completo al instante. Introduce tu email y te enviaremos un enlace de descarga seguro que expira en 72 horas.<\/p>\n            <div class=\"mf-pd-form-wrap\" data-slug=\"google-reviews\">\n            <style>\n            .mf-pd-form-wrap { max-width: 520px !important; margin: 0 auto !important; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif !important; }\n            .mf-pd-form { background: rgba(255,255,255,0.1) !important; border: 1px solid rgba(255,255,255,0.2) !important; border-radius: 16px !important; padding: 28px !important; backdrop-filter: blur(10px) !important; }\n            .mf-pd-form__row { margin-bottom: 14px !important; text-align: left !important; }\n            .mf-pd-form__label { display: block !important; color: rgba(255,255,255,0.95) !important; font-size: 13px !important; font-weight: 600 !important; margin-bottom: 6px !important; }\n            .mf-pd-form__input { width: 100% !important; padding: 12px 14px !important; border-radius: 8px !important; border: 1px solid rgba(255,255,255,0.3) !important; background: rgba(255,255,255,0.95) !important; font-size: 15px !important; color: #111827 !important; box-sizing: border-box !important; font-family: inherit !important; }\n            .mf-pd-form__input:focus { outline: none !important; border-color: #fff !important; box-shadow: 0 0 0 3px rgba(255,255,255,0.25) !important; }\n            .mf-pd-form__hp { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important; }\n            .mf-pd-form__consent { display: flex !important; align-items: flex-start !important; gap: 10px !important; font-size: 13px !important; color: rgba(255,255,255,0.9) !important; line-height: 1.5 !important; margin: 4px 0 18px !important; text-align: left !important; }\n            .mf-pd-form__consent input { margin-top: 3px !important; flex-shrink: 0 !important; }\n            .mf-pd-form__consent a { color: #fff !important; text-decoration: underline !important; }\n            .mf-pd-form__submit { width: 100% !important; padding: 14px 28px !important; border-radius: 999px !important; border: none !important; background: #fff !important; color: #667eea !important; font-weight: 700 !important; font-size: 16px !important; cursor: pointer !important; transition: transform 0.2s !important; font-family: inherit !important; }\n            .mf-pd-form__submit:hover { transform: translateY(-2px) !important; color: #5a67d8 !important; }\n            .mf-pd-form__submit:disabled { opacity: 0.6 !important; cursor: not-allowed !important; transform: none !important; }\n            .mf-pd-form__msg { margin-top: 14px !important; padding: 12px 16px !important; border-radius: 8px !important; font-size: 14px !important; line-height: 1.5 !important; text-align: left !important; }\n            .mf-pd-form__msg--success { background: rgba(16,185,129,0.2) !important; color: #fff !important; border: 1px solid rgba(16,185,129,0.4) !important; }\n            .mf-pd-form__msg--error { background: rgba(239,68,68,0.2) !important; color: #fff !important; border: 1px solid rgba(239,68,68,0.4) !important; }\n            .mf-pd-form__msg[hidden] { display: none !important; }\n            <\/style>\n\n            <form class=\"mf-pd-form\" onsubmit=\"return mfPdSubmit(event, this)\">\n                <input type=\"hidden\" name=\"action\" value=\"mf_plugin_request\">\n                <input type=\"hidden\" name=\"slug\" value=\"google-reviews\">\n                <input type=\"hidden\" name=\"_nonce\" value=\"6a2f5fdd04\">\n\n                <div class=\"mf-pd-form__row\">\n                    <label class=\"mf-pd-form__label\" for=\"mf_pd_name_google-reviews\">Your name<\/label>\n                    <input class=\"mf-pd-form__input\" id=\"mf_pd_name_google-reviews\" type=\"text\" name=\"name\" required maxlength=\"150\" autocomplete=\"name\">\n                <\/div>\n\n                <div class=\"mf-pd-form__row\">\n                    <label class=\"mf-pd-form__label\" for=\"mf_pd_email_google-reviews\">Email<\/label>\n                    <input class=\"mf-pd-form__input\" id=\"mf_pd_email_google-reviews\" type=\"email\" name=\"email\" required maxlength=\"190\" autocomplete=\"email\">\n                <\/div>\n\n                <div class=\"mf-pd-form__row\">\n                    <label class=\"mf-pd-form__label\" for=\"mf_pd_url_google-reviews\">Website URL <small style=\"opacity:0.7;font-weight:normal\">(optional)<\/small><\/label>\n                    <input class=\"mf-pd-form__input\" id=\"mf_pd_url_google-reviews\" type=\"url\" name=\"website_url\" maxlength=\"255\" placeholder=\"https:\/\/example.com\" autocomplete=\"url\">\n                <\/div>\n\n                <!-- Honeypot \u2014 bots fill this, humans don't see it -->\n                <div class=\"mf-pd-form__hp\" aria-hidden=\"true\">\n                    <label>Leave empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n                <\/div>\n\n                <label class=\"mf-pd-form__consent\">\n                    <input type=\"checkbox\" name=\"consent_gdpr\" required>\n                    <span>I agree to receive the download link by email and accept the <a href=\"\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">privacy policy<\/a>. Your data won't be shared with third parties.<\/span>\n                <\/label>\n\n                <button type=\"submit\" class=\"mf-pd-form__submit\">\ud83d\udce5 Send me the download link<\/button>\n\n                <div class=\"mf-pd-form__msg\" hidden><\/div>\n            <\/form>\n\n            <script>\n            (function(){\n                if (window.mfPdSubmit) return;\n                window.mfPdSubmit = function(e, form) {\n                    e.preventDefault();\n                    var btn = form.querySelector('.mf-pd-form__submit');\n                    var msg = form.querySelector('.mf-pd-form__msg');\n                    var originalText = btn.textContent;\n                    btn.disabled = true;\n                    btn.textContent = 'Sending\u2026';\n                    msg.hidden = true;\n\n                    var data = new FormData(form);\n                    fetch(\"https:\\\/\\\/mariof.es\\\/wp-admin\\\/admin-ajax.php\", {\n                        method: 'POST',\n                        body: data,\n                        credentials: 'same-origin'\n                    })\n                    .then(function(r){ return r.json(); })\n                    .then(function(json){\n                        btn.disabled = false;\n                        btn.textContent = originalText;\n                        msg.hidden = false;\n                        if (json && json.success) {\n                            msg.className = 'mf-pd-form__msg mf-pd-form__msg--success';\n                            msg.textContent = json.data && json.data.message ? json.data.message : 'Check your inbox \u2014 we just sent you the download link.';\n                            form.reset();\n                        } else {\n                            msg.className = 'mf-pd-form__msg mf-pd-form__msg--error';\n                            msg.textContent = (json && json.data && json.data.message) ? json.data.message : 'Something went wrong. Please try again.';\n                        }\n                    })\n                    .catch(function(){\n                        btn.disabled = false;\n                        btn.textContent = originalText;\n                        msg.hidden = false;\n                        msg.className = 'mf-pd-form__msg mf-pd-form__msg--error';\n                        msg.textContent = 'Network error. Please try again.';\n                    });\n                    return false;\n                };\n            })();\n            <\/script>\n        <\/div>\n        \n  <\/section>\n\n  <section class=\"gr-help\">\n    <h2>\u00bfNecesitas ayuda con la instalaci\u00f3n?<\/h2>\n    <p style=\"color:#6b7280;font-size:16px;max-width:560px;margin:0 auto 8px;line-height:1.6\">Si prefieres delegar la configuraci\u00f3n o quieres una versi\u00f3n personalizada, puedo ayudarte.<\/p>\n\n    <div class=\"gr-help__services\">\n      <div class=\"gr-help__service\"><strong>Instalaci\u00f3n y configuraci\u00f3n<\/strong><small>API key, Place ID, sync inicial, ajuste de estilos al tema y 30 d\u00edas de soporte por email.<\/small><span class=\"gr-help__price\">50 \u20ac \u2014 pago \u00fanico<\/span><\/div>\n      <div class=\"gr-help__service\"><strong>Personalizaci\u00f3n visual<\/strong><small>Plantillas personalizadas, cambios de layout, integraci\u00f3n con tu sistema de dise\u00f1o existente.<\/small><span class=\"gr-help__price\">desde 80 \u20ac<\/span><\/div>\n      <div class=\"gr-help__service\"><strong>Soporte prioritario<\/strong><small>Bugs, conflictos con plugins, integraciones a medida. Consulta primero.<\/small><span class=\"gr-help__price\">tarifa por hora<\/span><\/div>\n    <\/div>\n\n    <a href=\"mailto:mario@mariof.es?subject=Plugin%20Google%20Reviews%20-%20Servicios\" class=\"gr-btn gr-btn--outline\">Contactar<\/a>\n  <\/section>\n\n  <div class=\"gr-back\"><a href=\"\/es\/wordpress-plugins\/\">\u2190 Ver todos los plugins<\/a><\/div>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Plugin Google Business Reviews es un plugin WordPress gratuito que muestra las rese\u00f1as de Google Business mediante shortcode. Cache en base de datos local, sincronizaci\u00f3n diaria autom\u00e1tica y cumplimiento de los T\u00e9rminos de Google Places API con limpieza de 30 d\u00edas. Licencia GPL2.<\/p>\n","protected":false},"author":1002133,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-231738","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Plugin Google Business Reviews para WordPress \u2014 Gratuito, Cumple ToS<\/title>\n<meta name=\"description\" content=\"Plugin WordPress gratuito para mostrar rese\u00f1as de Google Business con el shortcode [google_reviews]. Layouts grid, carrusel y lista, limpieza autom\u00e1tica a 30 d\u00edas para cumplir los T\u00e9rminos de Google Places API. GPL2.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mariof.es\/es\/google-reviews-plugin\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Plugin Google Business Reviews para WordPress \u2014 Gratuito, Cumple ToS\" \/>\n<meta property=\"og:description\" content=\"Plugin WordPress gratuito para mostrar rese\u00f1as de Google Business con el shortcode [google_reviews]. Layouts grid, carrusel y lista, limpieza autom\u00e1tica a 30 d\u00edas para cumplir los T\u00e9rminos de Google Places API. GPL2.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mariof.es\/es\/google-reviews-plugin\/\" \/>\n<meta property=\"og:site_name\" content=\"Mario F.\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Yapa-110659060486905\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T21:56:42+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariof.es\\\/es\\\/google-reviews-plugin\\\/\",\"url\":\"https:\\\/\\\/mariof.es\\\/es\\\/google-reviews-plugin\\\/\",\"name\":\"Plugin Google Business Reviews para WordPress \u2014 Gratuito, Cumple ToS\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariof.es\\\/#website\"},\"datePublished\":\"2026-04-24T21:50:56+00:00\",\"dateModified\":\"2026-04-24T21:56:42+00:00\",\"description\":\"Plugin WordPress gratuito para mostrar rese\u00f1as de Google Business con el shortcode [google_reviews]. Layouts grid, carrusel y lista, limpieza autom\u00e1tica a 30 d\u00edas para cumplir los T\u00e9rminos de Google Places API. GPL2.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariof.es\\\/es\\\/google-reviews-plugin\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/mariof.es\\\/es\\\/google-reviews-plugin\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariof.es\\\/es\\\/google-reviews-plugin\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/mariof.es\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Plugin Google Business Reviews\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariof.es\\\/#website\",\"url\":\"https:\\\/\\\/mariof.es\\\/\",\"name\":\"Mario F.\",\"description\":\"Fotografo y dise\u00f1ador web\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/mariof.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Plugin Google Business Reviews para WordPress \u2014 Gratuito, Cumple ToS","description":"Plugin WordPress gratuito para mostrar rese\u00f1as de Google Business con el shortcode [google_reviews]. Layouts grid, carrusel y lista, limpieza autom\u00e1tica a 30 d\u00edas para cumplir los T\u00e9rminos de Google Places API. GPL2.","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:\/\/mariof.es\/es\/google-reviews-plugin\/","og_locale":"es_ES","og_type":"article","og_title":"Plugin Google Business Reviews para WordPress \u2014 Gratuito, Cumple ToS","og_description":"Plugin WordPress gratuito para mostrar rese\u00f1as de Google Business con el shortcode [google_reviews]. Layouts grid, carrusel y lista, limpieza autom\u00e1tica a 30 d\u00edas para cumplir los T\u00e9rminos de Google Places API. GPL2.","og_url":"https:\/\/mariof.es\/es\/google-reviews-plugin\/","og_site_name":"Mario F.","article_publisher":"https:\/\/www.facebook.com\/Yapa-110659060486905\/","article_modified_time":"2026-04-24T21:56:42+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mariof.es\/es\/google-reviews-plugin\/","url":"https:\/\/mariof.es\/es\/google-reviews-plugin\/","name":"Plugin Google Business Reviews para WordPress \u2014 Gratuito, Cumple ToS","isPartOf":{"@id":"https:\/\/mariof.es\/#website"},"datePublished":"2026-04-24T21:50:56+00:00","dateModified":"2026-04-24T21:56:42+00:00","description":"Plugin WordPress gratuito para mostrar rese\u00f1as de Google Business con el shortcode [google_reviews]. Layouts grid, carrusel y lista, limpieza autom\u00e1tica a 30 d\u00edas para cumplir los T\u00e9rminos de Google Places API. GPL2.","breadcrumb":{"@id":"https:\/\/mariof.es\/es\/google-reviews-plugin\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mariof.es\/es\/google-reviews-plugin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/mariof.es\/es\/google-reviews-plugin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/mariof.es\/es\/"},{"@type":"ListItem","position":2,"name":"Plugin Google Business Reviews"}]},{"@type":"WebSite","@id":"https:\/\/mariof.es\/#website","url":"https:\/\/mariof.es\/","name":"Mario F.","description":"Fotografo y dise\u00f1ador web","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mariof.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/pages\/231738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/users\/1002133"}],"replies":[{"embeddable":true,"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/comments?post=231738"}],"version-history":[{"count":3,"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/pages\/231738\/revisions"}],"predecessor-version":[{"id":231749,"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/pages\/231738\/revisions\/231749"}],"wp:attachment":[{"href":"https:\/\/mariof.es\/es\/wp-json\/wp\/v2\/media?parent=231738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}