Single Product Reviews
Las reseñas del PDP están endurecidas respecto al comportamiento nativo de WooCommerce.
Archivos clave:
- woocommerce/single-product-reviews.php
- setup/modules/woocommerce-setup/module.php
Qué cambia respecto a Woo nativo
El override no pinta solo una lista de comentarios. Añade:
- cabecera editorial con contador y media
- formulario lateral propio
- control de acceso por compra verificada
- bloqueo de segunda reseña por el mismo usuario
- subida de fotos con validación y persistencia
- galería frontend para las fotos de cada reseña
- metabox y columna admin para ver esas fotos
Acceso a reseñar
El estado lo resuelve Woo setup:
- guest
- not_purchased
- already_reviewed
- allowed
Regla real:
if (!wc_customer_bought_product($user_email, $user_id, $product_id)) {
return 'not_purchased';
}
if (bs_wc_setup_user_has_reviewed_product($product_id, $user_id)) {
return 'already_reviewed';
}Eso hace que una cuenta solo pueda publicar una reseña por producto y solo si compró.
Formulario con imágenes
El formulario añade un input múltiple review_images[] y un nonce específico.
Límites por defecto:
- máximo 5 imágenes
- máximo 5 MB por imagen
- tipos permitidos JPG, PNG y WEBP
La validación corre en preprocess_comment y aborta el envío con wp_die si algo no cuadra.
Persistencia
Si la subida es válida, cada archivo pasa por media_handle_sideload() y los attachment IDs se guardan en comment meta.
Meta key:
- _bs_wc_review_image_ids
Render frontend
Las imágenes se inyectan después del texto de la reseña mediante:
- bs_wc_setup_get_review_image_gallery_markup()
- bs_wc_setup_render_review_image_gallery()
- hook woocommerce_review_after_comment_text
Si Fancybox está disponible, cada imagen se abre dentro de una galería review-{comment_ID}.
JS adicional
En single product, Woo setup encola además un script específico para el preview y límites del upload:
- assets/js/woocommerce-review-images.js del módulo Woo setup
Ese script recibe por localize:
- maxFiles
- tooManyFilesMessage
Admin
Las fotos no se quedan solo en frontend. Woo setup añade:
- metabox en edición de comentario
- columna Fotos en la tabla de comentarios
- estilos admin inline para miniaturas
Regla práctica
- si falla el acceso a reseñar, revisa bs_wc_setup_get_product_review_access_state()
- si fallan uploads, revisa nonce, límites y mime types en Woo setup
- si falla el render de fotos, revisa el comment meta y el hook woocommerce_review_after_comment_text