Schema.org structured data
Datos estructurados JSON-LD automáticos (Schema.org) en las páginas de producto. Ayudan a los buscadores a mostrar rich snippets en los resultados.
Generación automática
Section titled “Generación automática”Los datos estructurados se generan automáticamente en las páginas de producto. No es necesario instalar plugins de SEO adicionales para los datos estructurados de producto - Polski for WooCommerce se encarga de ello de forma independiente.
Si utilizas un plugin de SEO (Yoast, Rank Math, SEOPress), Polski for WooCommerce se integra con él y complementa los datos en lugar de duplicarlos.
Tipo Product
Section titled “Tipo Product”En cada página de producto se genera un objeto Product que contiene:
{ "@context": "https://schema.org", "@type": "Product", "name": "Premium Cotton T-shirt", "description": "T-shirt made from certified organic cotton, sizes S-XXL.", "image": [ "https://yourstore.com/wp-content/uploads/tshirt-1.jpg", "https://yourstore.com/wp-content/uploads/tshirt-2.jpg" ], "sku": "TSH-001", "gtin13": "5901234123457", "brand": { "@type": "Brand", "name": "MyBrand" }, "manufacturer": { "@type": "Organization", "name": "Producer XYZ Sp. z o.o.", "address": { "@type": "PostalAddress", "streetAddress": "ul. Fabryczna 1", "addressLocality": "Warsaw", "postalCode": "00-001", "addressCountry": "PL" }, "url": "https://xyz.pl" }, "countryOfOrigin": { "@type": "Country", "name": "PL" }, "offers": { ... }, "aggregateRating": { ... }}Campos de Product
Section titled “Campos de Product”| Campo Schema.org | Fuente de datos | Obligatorio |
|---|---|---|
name | Nombre del producto en WooCommerce | Sí |
description | Descripción corta del producto | Sí |
image | Imagen principal + galería | Sí |
sku | SKU del producto | No |
gtin13 / gtin8 | Campo GTIN/EAN de Polski | No |
brand | Fabricante/marca de Polski | No |
manufacturer | Datos del fabricante de GPSR | No |
countryOfOrigin | País de origen de GPSR | No |
category | Categoría del producto | No |
material | Atributo “material” (si existe) | No |
color | Atributo “color” (si existe) | No |
weight | Peso del producto en WooCommerce | No |
Tipo Offer
Section titled “Tipo Offer”Cada producto contiene un objeto Offer anidado con información de precio y disponibilidad:
{ "@type": "Offer", "url": "https://yourstore.com/product/cotton-tshirt/", "price": "89.00", "priceCurrency": "PLN", "priceValidUntil": "2026-12-31", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition", "seller": { "@type": "Organization", "name": "My Store" }, "shippingDetails": { "@type": "OfferShippingDetails", "deliveryTime": { "@type": "ShippingDeliveryTime", "handlingTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 2, "unitCode": "d" }, "transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "d" } }, "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "PL" } }, "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "merchantReturnDays": 14, "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", "returnMethod": "https://schema.org/ReturnByMail" }}Campos de Offer
Section titled “Campos de Offer”| Campo Schema.org | Fuente de datos |
|---|---|
price | Precio del producto |
priceCurrency | Moneda de WooCommerce |
priceValidUntil | Fecha de fin de la oferta |
availability | Estado del stock |
itemCondition | Siempre NewCondition |
seller | Nombre de la tienda de los ajustes |
deliveryTime | Plazo de entrega de Polski |
hasMerchantReturnPolicy | Derecho de desistimiento de Polski |
Asignación de disponibilidad
Section titled “Asignación de disponibilidad”| Estado de WooCommerce | Schema.org |
|---|---|
instock | https://schema.org/InStock |
outofstock | https://schema.org/OutOfStock |
onbackorder | https://schema.org/BackOrder |
Tipo Offer para productos variables
Section titled “Tipo Offer para productos variables”Los productos variables generan un AggregateOffer con un rango de precios:
{ "@type": "AggregateOffer", "lowPrice": "69.00", "highPrice": "129.00", "priceCurrency": "PLN", "offerCount": 6, "availability": "https://schema.org/InStock", "offers": [ { "@type": "Offer", "price": "69.00", "sku": "TSH-001-S", "availability": "https://schema.org/InStock" } ]}Tipo AggregateRating
Section titled “Tipo AggregateRating”Si un producto tiene reseñas, se genera un objeto AggregateRating:
{ "@type": "AggregateRating", "ratingValue": "4.5", "bestRating": "5", "worstRating": "1", "ratingCount": 23, "reviewCount": 18}Los datos se recogen del sistema de reseñas de WooCommerce. Si el módulo Reseñas verificadas está activo, solo se incluyen las reseñas de compras confirmadas.
Tipo Review
Section titled “Tipo Review”Las reseñas individuales se generan como objetos Review:
{ "@type": "Review", "author": { "@type": "Person", "name": "Jan K." }, "datePublished": "2025-05-20", "reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" }, "reviewBody": "Excellent material quality, highly recommend."}Productos alimenticios - NutritionInformation
Section titled “Productos alimenticios - NutritionInformation”Para los productos del módulo de alimentos se genera un objeto NutritionInformation:
{ "@type": "NutritionInformation", "calories": "250 kcal", "fatContent": "12 g", "saturatedFatContent": "3 g", "carbohydrateContent": "30 g", "sugarContent": "5 g", "proteinContent": "8 g", "sodiumContent": "0.8 g", "fiberContent": "2 g", "servingSize": "100 g"}Filtrado de los datos estructurados
Section titled “Filtrado de los datos estructurados”Modificar todo el objeto
Section titled “Modificar todo el objeto”add_filter('polski/schema/product', function (array $schema, WC_Product $product): array { // Add a custom field $schema['award'] = 'Product of the Year 2025'; return $schema;}, 10, 2);Modificar el Offer
Section titled “Modificar el Offer”add_filter('polski/schema/offer', function (array $offer, WC_Product $product): array { // Add warranty information $offer['warranty'] = [ '@type' => 'WarrantyPromise', 'durationOfWarranty' => [ '@type' => 'QuantitativeValue', 'value' => 24, 'unitCode' => 'MON', ], ]; return $offer;}, 10, 2);Desactivar Schema.org para productos seleccionados
Section titled “Desactivar Schema.org para productos seleccionados”add_filter('polski/schema/enabled', function (bool $enabled, int $product_id): bool { // Disable for products in the "temporary" category if (has_term('temporary', 'product_cat', $product_id)) { return false; } return $enabled;}, 10, 2);Validación de los datos estructurados
Section titled “Validación de los datos estructurados”Prueba los datos estructurados de tu tienda con:
- Google Rich Results Test - herramienta oficial de Google
- Schema.org Validator - validador de Schema.org
En el modo de depuración de WordPress (WP_DEBUG = true), el plugin registra avisos sobre campos obligatorios de Schema.org que faltan en debug.log.
Integración con plugins de SEO
Section titled “Integración con plugins de SEO”Polski for WooCommerce detecta los plugins de SEO más populares y ajusta su comportamiento:
| Plugin | Comportamiento |
|---|---|
| Yoast SEO | Complementa el esquema de Yoast existente con campos de Polski |
| Rank Math | Complementa el esquema de Rank Math con campos de Polski |
| SEOPress | Complementa el esquema de SEOPress con campos de Polski |
| Ninguno | Genera el esquema completo de forma independiente |
En caso de conflicto (duplicación de datos estructurados), usa el filtro:
add_filter('polski/schema/standalone', '__return_false'); // Disable standalone generationResolución de problemas
Section titled “Resolución de problemas”Google no muestra rich snippets - los rich snippets pueden aparecer varias semanas después de la indexación. Asegúrate de que los datos pasen la validación en el Rich Results Test.
Duplicación de datos estructurados - si otro plugin genera el esquema Product, usa el filtro polski/schema/standalone para desactivar la generación independiente.
Sin valoraciones en Schema.org - el producto debe tener al menos 1 reseña con valoración por estrellas.
Notificar problemas: github.com/wppoland/polski/issues