Leer una URL de términos específica de producto

El módulo moderno de términos específicos de producto expone un asistente de conveniencia para la primera política y un asistente para la lista completa configurada:

pom_tweaks_get_terms_url( $product ): string
pom_tweaks_get_terms_policies( $product ): array

Actívalo en Settings → POM Tweaks → E-Commerce → Accounts & privacy → Product specific Terms & Conditions antes de usar el asistente.

Entrada aceptada

$product puede ser:

  • un objeto WC_Product;
  • un ID numérico de producto o variación de WooCommerce.

El asistente escalar devuelve la URL de la primera política, o una cadena vacía para una entrada no válida, un producto inexistente o un producto sin políticas. El asistente de lista devuelve un array de pares de url y pdf_url, o un array vacío. Para una variación sin su propio valor, el asistente recurre a la política del producto padre.

Usa el asistente de forma segura

$terms_url = function_exists( 'pom_tweaks_get_terms_url' )
    ? pom_tweaks_get_terms_url( $product )
    : '';

if ( $terms_url !== '' ) {
    printf(
        '<a href="%s">%s</a>',
        esc_url( $terms_url ),
        esc_html__( 'Product terms', 'your-text-domain' )
    );
}

El valor devuelto es la URL de política guardada y validada. Escápala para el contexto de salida final. No uses la disponibilidad del asistente como prueba de que un cliente aceptó la política; la aceptación en el checkout se registra por separado en el pedido.

Listas completas de políticas y proveedores de PDF

pom_tweaks_get_terms_policies() conserva el orden de filas guardado y la herencia de variaciones. Trata pdf_url como configuración del lado del servidor; no la publiques en el marcado de la tienda ni en APIs sin autenticar. El asistente escalar devuelve la primera URL configurada.

Un proveedor del lado del servidor puede implementar pom_tweaks_resolve_terms_pdf con tres argumentos: el resultado anterior, la URL absoluta de PDF configurada y el contexto de la política. Los callbacks existentes de dos argumentos siguen siendo compatibles. Devuelve null cuando el proveedor no es dueño de la URL, un array que contenga el valor binario bytes cuando resuelva el documento, o WP_Error cuando una dirección de su propiedad no esté disponible o no esté autorizada. Los proveedores deben aplicar su propio ámbito de origen y la elegibilidad del documento. Un error impide recurrir a la recuperación HTTP pública.

Las políticas generales incluyen scope: general, page_id y blog_id. Úsalos para rechazar una dirección que se resuelva a una página distinta de los términos generales aceptados. Las políticas de producto no requieren esos campos.

Para la selección automática de PDF general, implementa pom_tweaks_general_terms_pdf_url con tres argumentos: la URL anterior, el ID efectivo de la página de términos de WooCommerce y su enlace permanente público. Devuelve una dirección absoluta de PDF HTTP(S) únicamente para una página compatible de tu propiedad; de lo contrario, conserva el valor entrante. El hook se ejecuta cuando la captura general está habilitada y su URL manual está vacía. Esto es únicamente resolución de dirección: el proveedor de PDF ordinario debe seguir verificando que el documento esté listo al capturar la aceptación.

El consumidor verifica la cabecera del archivo PDF, el tamaño total y el SHA-256 capturado; no valida una firma digital. Este filtro no implica ningún endpoint HTTP ni autorización pública. Las URLs de PDF públicas usan la API HTTP segura de WordPress cuando ningún proveedor las reclama. Solo el código de servidor de confianza puede registrar proveedores.

Verificación

Prueba un producto simple con una política, un producto sin ella, una variación que hereda la política de su padre, un ID no válido y el estado de módulo deshabilitado.

Consulta Require product-specific terms at checkout para la configuración y la evidencia de aceptación registrada en el checkout.