Hace unos años escribimos un artículo sobre cómo generar un archivo DOCX desde el contenido de una página web que podéis consultar en este enlace.

Ahora explicamos cómo imprimir por ejemplo el resultado de una búsqueda específica que hayamos programado en WordPress. En este caso, hicimos un buscador personalizado para un modelo de datos definido con ACF que necesitaba, y al realizar las búsquedas, el cliente quería poder extraer esos datos en listados que obtenía resultado de las búsquedas, con los campos personalizados tal y como se devolvían en la página, con un orden y una agrupación específicos, cosa que los plugins que conocíamos de WordPress no permitían.

Para ello, en la página en la que construíamos el listado hemos insertado un formulario con campos ocultos con un botón visible con el que enviamos la información en html exáctamente que queríamos listar en DOCX. Al hacer clic, ese botón enviará la información a un archivo como el del enlace anterior, en el que se recibe todo el HTML, creando el archivo DOCX con el listado, y simplemente añadimos un poco de estilo para poder mostrar el listado con el mismo diseño.

El código necesario para hacer todo esto es sencillo:

En el archivo donde está el resultado de la búsqueda, creamos:

echo "<form method=post action=archivoParaImprimir.php><input name='contenido' id='contenido' type='hidden' value='".$listadoEnHtml."'><input type='submit' value='DOCX'></form>";

y el archivo que genera el DOCX:

<?php
$contenido = $_POST['contenido'];
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=listado.docx");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
<!--
    /*aquí ponemos las reglas que queramos, con las clases que tenemos*/
-->
</style>
</head>
<body>
<?php echo $contenido; ?>
</body>
</html>