Avisos
Vaciar todo

Datos estructurados

6 Respuestas
3 Usuarios
0 Reactions
17 Visitas
RAFAEL
Respuestas: 567
Honorable Member
Topic starter
 

Hola, 

He publicado la nueva web y ahora me ha aparecido un aviso de problemas con los datos estructurados y que tengo que especificar "offers", "review" o "aggregateRating" en los productos de la tienda. 

¿Hay forma de hacerlo?

Gracias

Contenido solo visible a usuarios registrados


 
Respondido : 28/04/2024 6:35 am
Tags del tema
Pepe
 Pepe
Respuestas: 41114
Illustrious Member Admin
 

Hola Rafael.

Los datos Review y aggregateRating son opcionales, no afectan paar el SEO, de todas formas puedes probar añadiendo lo siguiente en el al plugin de Fragmentos de codigo:

add_filter( 'wpseo_json_ld_output', 'agregar_datos_estructurados_producto_yoastseo', 10, 1 );
function agregar_datos_estructurados_producto_yoastseo( $data ) {
// Verificar si estamos en la página de un producto de WooCommerce
if ( is_product() ) {
global $product;

// Obtener información del producto
$product_id = $product->get_id();
$product_name = $product->get_name();
$product_description = $product->get_description();
$product_sku = $product->get_sku();
$product_price = $product->get_price();
$product_url = get_permalink( $product_id );
$product_image = wp_get_attachment_image_src( get_post_thumbnail_id( $product_id ), 'full' );

// Obtener las revisiones del producto
$reviews = get_comments( array(
'post_id' => $product_id,
'status' => 'approve',
'type' => 'review'
) );

// Calcular la calificación promedio
$rating_total = 0;
foreach ( $reviews as $review ) {
$rating = get_comment_meta( $review->comment_ID, 'rating', true );
$rating_total += $rating;
}
$rating_average = count( $reviews ) > 0 ? $rating_total / count( $reviews ) : 0;

// Construir el array de datos estructurados
$product_data = array(
'@context' => 'http://schema.org/',
'@type' => 'Product',
'name' => $product_name,
'description' => $product_description,
'sku' => $product_sku,
'offers' => array(
'@type' => 'Offer',
'price' => $product_price,
'priceCurrency' => get_woocommerce_currency(),
'availability' => 'http://schema.org/InStock',
'url' => $product_url
),
'image' => array(
'@type' => 'ImageObject',
'url' => $product_image[0],
'width' => $product_image[1],
'height' => $product_image[2]
),
'review' => array(
'@type' => 'Review',
'aggregateRating' => array(
'@type' => 'AggregateRating',
'ratingValue' => $rating_average,
'reviewCount' => count( $reviews )
)
)
);

// Agregar los datos estructurados al array de datos de Yoast SEO
$data['@graph'][] = $product_data;
}

return $data;
}


Un. saludo


 
Respondido : 28/04/2024 11:16 am
RAFAEL
Respuestas: 567
Honorable Member
Topic starter
 

@pepesoler Hola, 

¿Debo ponerlo como php o html? Al copiarlo en php, aparecen fragmentos en color rojo ¿es correcto?

image

Gracias


 
Respondido : 28/04/2024 5:41 pm
Bruno
Respuestas: 6477
Illustrious Member Moderator
 

Que tal Rafael,

¿Debo ponerlo como php o html?

El fragmento de codigo compartido por mi compañero es un filtro con una funcion en PHP

Al copiarlo en php, aparecen fragmentos en color rojo ¿es correcto?

Si estas utilizando para gestionar los fragmentos de código un plugin como Code snippets, esta es la forma en la que marca la diferencia de algunos elementos, mas no es un error

Saludos!


 
Respondido : 28/04/2024 6:04 pm
RAFAEL
Respuestas: 567
Honorable Member
Topic starter
 

@bruno-vichetti Gracias


 
Respondido : 29/04/2024 11:16 am
Pepe
 Pepe
Respuestas: 41114
Illustrious Member Admin
 

Hola Rafael.

Nada, gracias a ti.

Dejo el hilo abierto por si necesitas retomarlo.

 

Un Saludo


 
Respondido : 29/04/2024 12:00 pm