Volver

Plugin personalizado post en archivo excel WP (Hidrotecno)

Este artículo es una continuación Formulario de contacto (Hidrotecno), que debes haberlo leído, antes de continuar.

Lo primero que debemos hacer es instalar el plugins php spread sheet, el cual nos ayudará a convertir los Custom Post a tablas de excel (Lo descargamos desde anexos) y lo instalamos.

 

 

 

Cosa a tener en cuenta en el código

La variable $post_type contiene el nombre de post type que queremos pasar a Excel

 

Todos los nombres de las funciones y el texto que verá el usuario, deben hacer referencia al post type.

 

 

Al momento de crear el nombre del archivo excel requerimos la fecha, esta debería ser la hora del país de donde es el cliente, en este caso usamos la hora de la ciudad de México, ya que el proyecto es de este lugar.

 

Estos son los nombres de los encabezados de las columnas, debes asegurarte que los nombres correspondan a los datos reales.

Descargar archivo con los Post

Si todo sale bien, podremos descargar el archivo de Excel con los datos de los formularios o de cualquier clase de post.

 

Archivos Usados

1.

contact-to-excel.php

PHP

wp-content/themes/depura_theme/functions/utils/

Setting

<?php
function generar_contact_excel_page()
{
  //Variables
  $post_type = 'post_contact';

  // Incluir PhpSpreadSheet
  require_once(CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php');
  // Crear una instancia del objeto Spreadsheet
  global $wp_filesystem;
  WP_Filesystem();
  $content_directory = $wp_filesystem->wp_content_dir() . 'uploads/excel/';
  $wp_filesystem->mkdir($content_directory);
  $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();

  // Eliminar todos los archivos en la carpeta
  $files = glob($content_directory . 'contact*');
  foreach ($files as $file) {
    if (is_file($file)) {
      unlink($file);
    }
  }

  // Obtener los datos del custom post type
  $args = array(
    'post_type' => $post_type,
    'posts_per_page' => -1,
  );
  $query = new WP_Query($args);
  $posts = $query->get_posts();

  // Crear una hoja de cálculo y agregar los datos
  $sheet = $spreadsheet->getActiveSheet();
  $sheet->setCellValue('A1', 'Título');
  $sheet->setCellValue('B1', 'Asunto');
  $sheet->setCellValue('C1', 'Nombre');
  $sheet->setCellValue('D1', 'Correo');
  $sheet->setCellValue('E1', 'Mensaje');


  foreach ($posts as $post_index => $post) {
    $sheet->setCellValue('A' . ($post_index + 2), $post->post_title);
    $lines = explode("\n", $post->post_content);

    foreach ($posts as $post_index => $post) {
      $sheet->setCellValue('A' . ($post_index + 2), $post->post_title);
      $lines = explode("\n", $post->post_content);

      foreach ($lines as $line_index => $line) {
        $parts = explode(':', $line, 2);
        $value = count($parts) === 2 ? trim($parts[1], ";\r"): trim($parts[0], ";\r");
        $column = $line_index + 2;
        $sheet->setCellValueByColumnAndRow($column, ($post_index + 2), $value);
      }
    }
  }

  date_default_timezone_set('America/Mexico_City');
  $filename = 'contact_' . date('Ymd_His',) . '.xlsx';
  $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
  $writer->save($content_directory . $filename);
?>

  <div style="margin: 60px;">
    <a href="<?php echo get_home_url() . '/wp-content/uploads/excel/' . $filename ?>">
      Descargar Contact en Excel
    </a>
  </div>
<?php
}

function agregar_menu_generar_contact_excel()
{
  add_menu_page('Descargar Contact Excel', 'Descargar Contact Excel', 'manage_options', 'generar_contact_excel_page', 'generar_contact_excel_page');
}
add_action('admin_menu', 'agregar_menu_generar_contact_excel');

 

Anexos

Avatar

Autor

Elan Francisco P. Asprilla
Desarrollador Frontend

Artículos relacionados

Contactos (Palmas)

Componentes que muestra imagen de ubicación...

¿Cómo configurar la página que se ve en la URL Raíz?

Para configurar qué página se verá en el...

Componente Values (Dts-solar)

Este componente representa una sección de...