Shortcodes, hooks y guía de integración

Documento para desarrolladores que quieran extender el plugin o integrar el módulo
VERI*FACTU con otro generador de PDF o cualquier desarrollo propio
.

Si ya tienes tu propia zona de cliente, tus propios emails o tus propias plantillas de WooCommerce, los shortcodes te permiten añadir los datos de factura VERI*FACTU exactamente donde quieras, sin tocar el diseño que ya tienes.

No necesitas rehacerlo todo. Solo colocas el shortcode donde quieres que aparezca el dato y el plugin se encarga del resto.

Los shortcodes funcionan en cualquier entorno WordPress estándar: páginas, posts, widgets, constructores de páginas (Elementor, Divi, Bricks…), constructores de emails (Kadence, FluentCRM, AutomateWoo…) y también dentro de cualquier plugin de PDF que admita shortcodes de WordPress (YITH, WooCommerce PDF Invoices, Dokan, etc.). Si tu plugin de PDF puede renderizar un shortcode de WordPress, puede mostrar los datos de factura de Veri*Fac*WOO.

Esto significa que puedes mantener el plugin de PDF que ya usas y simplemente añadir el QR, el número de factura, el estado o la leyenda legal en la plantilla que ya tienes.

Convención: los shortcodes empiezan por verifacwoo_; los filtros y actions de PHP por vfwoo_.


Cómo funcionan

La mayoría de shortcodes necesitan saber a qué pedido pertenece la factura. Para eso se usa el atributo order_id. Pero en la mayoría de casos no hace falta que lo pongas: el plugin detecta el pedido automáticamente según dónde estás.

Dónde lo usasQué detecta automáticamente
Página de confirmación de pago (Thank You)El pedido que acaba de pagar el cliente
Página Ver Pedido del área de clienteEl pedido que está consultando
Email de WooCommerceEl pedido del email
Admin — detalle de un pedidoEl pedido abierto

Solo necesitas poner order_id="123" cuando usas el shortcode en una página genérica — por ejemplo, en un post o una página estática donde el plugin no puede detectar el pedido del contexto.


Mostrar datos fiscales en cualquier página (shortcodes)

Para qué sirve. Pintar el número de factura, el QR de VERI*FACTU, la leyenda legal, el estado, el enlace de descarga, etc. en cualquier página, plantilla, email o documento.

Detalle técnico. Todos aceptan el atributo order_id. Registrados en includes/class-shortcodes.php.

ShortcodeDevuelve
verifacwoo_numeroNúmero completo de factura (serie + número).
verifacwoo_serieSerie de facturación.
verifacwoo_tipoTipo de factura (F1, F2, R1–R5).
verifacwoo_fechaFecha de expedición.
verifacwoo_importe_totalImporte total de la factura.
verifacwoo_estadoEstado de envío/validación AEAT.
verifacwoo_qrImagen del QR VERI*FACTU.
verifacwoo_firmaFirma/huella del registro.
verifacwoo_leyendaLeyenda legal VERI*FACTU.
verifacwoo_cotejo_urlURL oficial de cotejo en la AEAT.
verifacwoo_downloadEnlace de descarga del PDF.
verifacwoo_factura_originalReferencia a la factura original (en rectificativas).
verifacwoo_factura_cardTarjeta resumen de la factura.
verifacwoo_configDatos de configuración para uso en frontend.

Ejemplo 1: Número de factura.

Ejemplo 2: Código QR.

En contexto de un pedido (p. ej. dentro de una plantilla de email/PDF de pedido) puede omitirse order_id si el plugin puede resolver el pedido del contexto; cuando no hay contexto, pásalo siempre explícito.


Tarjeta de factura completa

Es el shortcode más completo y el más fácil de usar. Genera en un solo bloque todo lo que necesita ver tu cliente: el código QR oficial de VERI*FACTU, el número de factura y el enlace directo para verificarla en la sede electrónica de la AEAT.

Ideal para colocar en la página de confirmación de pago o en la zona de cliente.

[verifacwoo_factura_card]

Si quieres ajustar el tamaño del QR:

[verifacwoo_factura_card size="200"]


Datos básicos de la factura

Muestra el número completo de la factura: la serie más el número. Por ejemplo: FAC-2026-87.

Útil para confirmaciones, emails o cualquier lugar donde quieras que el cliente vea el número de su factura.

[verifacwoo_numero]

Fecha de expedición de la factura, en el formato configurado en WordPress.

[verifacwoo_fecha]

Importe total de la factura registrado en la AEAT. Por defecto muestra el símbolo , pero puedes cambiarlo:

[verifacwoo_importe_total]
[verifacwoo_importe_total moneda="€"]

Tipo de factura emitida. Puedes elegir cómo se muestra:

  • texto → muestra “Factura” o “Rectificativa” (texto legible para el cliente)
  • codigo → muestra el código técnico: F1, F2, R1… R5
  • badge → devuelve una etiqueta HTML con clase CSS para que la puedas estilizar como quieras
[verifacwoo_tipo formato="texto"]
[verifacwoo_tipo formato="badge"]

Muestra solo la serie de facturación, sin el número. Por ejemplo: FAC-2026-.

[verifacwoo_serie]

Estado del envío a la AEAT

Muestra en qué punto está la factura en su proceso de verificación con Hacienda. Útil para que el cliente vea si su factura ya está confirmada o aún está en proceso.

EstadoQué significa
Confirmada AEATLa AEAT ha aceptado la factura
EnviadaEnviada, pendiente de confirmación
PendienteAún no se ha enviado
RechazadaLa AEAT no la ha aceptado
CanceladaLa factura ha sido anulada
ValidandoEn proceso de verificación
[verifacwoo_estado formato="texto"]
[verifacwoo_estado formato="badge"]

Con badge obtienes una etiqueta HTML que puedes estilizar con CSS según el estado.


QR y verificación oficial

El código QR oficial de VERI*FACTU. Cuando el cliente lo escanea, accede directamente a la sede electrónica de la AEAT para verificar la autenticidad de su factura.

Puedes usarlo de dos formas:

Imagen lista para mostrar

[verifacwoo_qr png="1" size="150"]

Solo el data URI, para usarlo en el src de tu propia etiqueta img


La URL directa de verificación en la AEAT. Útil si quieres crear tu propio enlace con el texto que tú quieras, en vez de mostrar el QR:

[verifacwoo_cotejo_url]

Ejemplo combinado con enlace propio:

<a href="[verifacwoo_cotejo_url]" target="_blank">
  Verificar esta factura en la AEAT
</a>

Descarga del PDF

Enlace de descarga del PDF de la factura. El texto del enlace, el estilo CSS y el tipo de documento son configurables:

[verifacwoo_download]
[verifacwoo_download texto="Descargar mi factura" class="mi-boton"]

Para rectificativas:

[verifacwoo_download tipo="credit_note" texto="Descargar factura rectificativa"]

Texto legal

El texto legal obligatorio que debe aparecer en las facturas VERI*FACTU. Puedes elegir entre la versión completa y la corta:

[verifacwoo_leyenda]
[verifacwoo_leyenda estilo="corto"]
  • Completo“Factura expedida conforme al RD 1007/2023 (VERI*FACTU). Factura verificable en la sede electrónica de la AEAT”
  • Corto“Factura VERI*FACTU”

Rectificativas

En una factura rectificativa, muestra la referencia a la factura original que se está rectificando. Si el pedido no es una rectificativa, no muestra nada.

[verifacwoo_factura_original]
[verifacwoo_factura_original incluir_motivo="no"]

Datos de la empresa

Mikhail Morozov Morozov

Muestra cualquier dato de tu empresa configurado en el plugin. Útil para incluir tu nombre fiscal, email o teléfono en plantillas sin tener que escribirlo a mano en cada sitio.

[verifacwoo_config return="company_name"]
info@verifacwoo.com 645595169 Calle El Raval 68

https://verifacwoo.com/wp-content/uploads/2026/05/logo.png © 2026 Veri*Fac*WOO® <br><small><a href="https://verifacwoo.com">Veri*Fac*WOO</a></small>


Firma digital

El hash SHA-256 de la factura — la huella digital que garantiza que el documento no ha sido modificado. Uso técnico, normalmente solo necesario en plantillas muy personalizadas.

[verifacwoo_firma]

Ejemplos completos por contexto

Página de confirmación de pago (Thank You)

Lo mínimo para que el cliente vea su factura justo después de pagar:

[verifacwoo_factura_card]

Página Ver Pedido del área de cliente

Información completa para que el cliente consulte su factura en cualquier momento:

Número de factura: [verifacwoo_numero]
Fecha: [verifacwoo_fecha]
Importe: [verifacwoo_importe_total]
Estado AEAT: [verifacwoo_estado formato="badge"]


Email personalizado

Para añadir los datos de factura en tus propios emails de WooCommerce (Kadence, Elementor, FluentCRM, etc.), sustituye {{order_id}} por la variable de ID de pedido de tu constructor:

[verifacwoo_numero order_id="{{order_id}}"]


Uso en plantillas PHP

Si prefieres trabajar directamente en archivos PHP (thankyou.php, single-order.php, etc.):


Usar el módulo VERI*FACTU con OTRO plugin de PDF

Para qué sirve. Si ya generas el PDF con otro plugin (o uno propio) y solo quieres el QR, la leyenda y los datos fiscales oficiales de VERI*FACTU, no necesitas el PDF interno; inserta los shortcodes en tu propia plantilla.

Ejemplo: Dentro de la plantilla del otro plugin de PDF.

// $order_id disponible en la plantilla del otro plugin
echo do_shortcode( sprintf( '[verifacwoo_qr order_id="%d"]', $order_id ) );
echo do_shortcode( sprintf( '[verifacwoo_leyenda order_id="%d"]', $order_id ) );
echo do_shortcode( sprintf( '[verifacwoo_numero order_id="%d"]', $order_id ) );

// Opción más sencilla — shortcode directo
$order_id = get_query_var('order-received') ?: get_query_var('view-order');
echo do_shortcode('[verifacwoo_factura_card order_id="' . intval($order_id) . '" size="150"]');

O combinando shortcodes individuales para más control:

$id = intval($order_id);

echo do_shortcode('[verifacwoo_qr order_id="' . $id . '" png="1" size="150"]');
echo '<strong>' . do_shortcode('[verifacwoo_numero order_id="' . $id . '"]') . '</strong>';
echo do_shortcode('[verifacwoo_estado order_id="' . $id . '" formato="badge"]');
echo do_shortcode('[verifacwoo_download order_id="' . $id . '" texto="Descargar PDF"]');

Así el módulo VERI*FACTU (numeración, emisión y QR) sigue siendo el de Veri*Fac*WOO, y el PDF lo pinta el otro sistema. El módulo PDF interno es totalmente opcional.


Añadir tipos de pedido facturables

Para qué sirve. Por defecto se facturan shop_order (checkout, admin, REST, Bookings, Deposits, Pre-Orders) y shop_order_renewal (renovaciones de Subscriptions). Si otro plugin crea un tipo de pedido propio que debe facturarse, añádelo con este filtro.

Ejemplo:

add_filter( 'vfwoo_invoice_order_types', function ( array $types ) {
    $types[] = 'mi_tipo_de_pedido';
    return $types;
} );

Detalle técnico.

FiltroParámetrosDevuelve
vfwoo_invoice_order_typesarray $typesArray de tipos de pedido (slugs).

Afecta a la reserva/asignación de número y a la creación de factura local (Invoice_Helper::reserve_invoice_number() y create_local_invoice()).


Personalizar el PDF interno

¿Para qué sirve?. Modificar lo que aparece en el PDF generado por el plugin: datos del emisor/comprador, líneas, totales, título, plantilla, o el HTML final completo.

Ejemplo 1: Añadir un texto al pie cambiando el HTML final.

add_filter( 'vfwoo_pdf_final_html', function ( $html, $order_id, $document_type ) {
    return str_replace( '</body>', '<p>Gracias por su compra.</p></body>', $html );
}, 10, 3 );

Ejemplo 2: Forzar el número mostrado en el PDF.

add_filter( 'vfwoo_pdf_invoice_number', function ( $numero, $order_id ) {
    return $numero; // aquí podrías ajustarlo
}, 10, 2 );

Detalle técnico. Todos los filtros vfwoo_pdf_* de datos reciben $valor, int $order_id (salvo los marcados). Se aplican en modules/pdf/class-pdf-document-data.php y class-pdf-html-renderer.php.

FiltroValor que filtraArgs extra
vfwoo_pdf_document_typetipo de documento (invoice,…)$order_id
vfwoo_pdf_document_titletítulo del documento$order_id
vfwoo_pdf_invoice_numbernúmero mostrado$order_id
vfwoo_pdf_invoice_datefecha mostrada$order_id
vfwoo_pdf_seller_datadatos del emisor (array)$order_id
vfwoo_pdf_buyer_datadatos del comprador (array)$order_id
vfwoo_pdf_itemslíneas de producto (array)$order_id
vfwoo_pdf_feeslíneas de fee (array)$order_id
vfwoo_pdf_shipping_lineslíneas de envío (array)$order_id
vfwoo_pdf_totalstotales (array)$order_id
vfwoo_pdf_taxesdesglose de impuestos (array)$order_id
vfwoo_pdf_payment_methodmétodo de pago (string)$order_id
vfwoo_pdf_notesnota del cliente (string)$order_id
vfwoo_pdf_refund_reasonmotivo del reembolso (string)$order_id
vfwoo_pdf_parent_invoicefactura original (array)$order_id
vfwoo_pdf_couponscupones usados$order_id
vfwoo_pdf_extra_datadatos extra para la plantilla$order_id
vfwoo_pdf_template_fileruta de la plantilla$order_id, $document_type
vfwoo_pdf_final_htmlHTML final antes de renderizar$order_id, $document_type

Reaccionar a eventos (actions)

¿Para qué sirve?. Ejecutar lógica propia cuando se confirma una factura, se genera el PDF o cambia el estado de la licencia (sincronizar con un ERP, registrar métricas, etc…).

Ejemplo: Enviar la factura confirmada a un sistema externo:

add_action( 'vfwoo_invoice_confirmed', function ( $order_id, $invoice, $new_status ) {
    // p. ej. notificar a un ERP
}, 10, 3 );

Detalle técnico.

ActionParámetrosCuándo
vfwoo_invoice_confirmed$order_id, $invoice, $new_statusAl confirmar el estado de una factura.
vfwoo_pdf_before_generate$order_idJusto antes de generar el PDF.
vfwoo_pdf_after_generate$order_id, $pdf_pathTras generar el PDF (ruta del archivo).
vfwoo_license_expired$expiresAl detectar licencia caducada.
vfwoo_license_expiring_soon$expires, $daysLicencia próxima a caducar.
vfwoo_tab_pdf_contentPara pintar configuración propia en el tab PDF.

6. Categorías y datos UBL/fiscales

¿Para qué sirve?. Ampliar las categorías, motivos, esquemas o remarks fiscales que el plugin usa al construir el desglose (útil para casos fiscales no contemplados por defecto).

Ejemplo:

add_filter( 'vfwoo_ubl_tax_categories', function ( array $extra ) {
    $extra['mi_categoria'] = 'Descripción';
    return $extra;
} );

Detalle técnico. Todos reciben array $extra y devuelven el array combinado.

FiltroAmplía
vfwoo_ubl_tax_categoriesCategorías fiscales.
vfwoo_ubl_tax_reasonsMotivos de exención.
vfwoo_ubl_tax_schemesEsquemas de impuesto.
vfwoo_ubl_tax_remarksRemarks/observaciones fiscales.
vfwoo_daily_summary_incidentsIncidencias del resumen diario (array $incidents, bool $is_test).
Última actualización el 30 de junio de 2026

¿Le ha resultado útil este artículo?

ANTERIOR

Precios y licencias

La GRAN noticia es que ESTAMOS AQUI !!!

Y hemos llegado para quedarnos.

El resto de las noticias irá llegando, una tras otra.

Apúntate a nuestra newsletter y no te perderás ni una sola actualización.

Porque lo mejor está por venir.