To create a custom menu page in WordPress, retrieve custom table data from MySQL, and display it with the ability to export to CSV/Excel, you can follow these steps:
1. Create a custom table in your WordPress database to store your data. You can use the $wpdb global variable to interact with custom tables in WordPress. Here's an example of creating a custom table:
<?php global $wpdb; $table_name = $wpdb->prefix . 'custom_data'; $sql = "CREATE TABLE IF NOT EXISTS $table_name ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, phone VARCHAR(20) NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); ?>
2. Add the following code to your theme's functions.php file or create a custom plugin file to define the custom menu page:
<?php // Add menu page function custom_menu_page() { add_menu_page( 'Custom Data', 'Custom Data', 'manage_options', 'custom-data', 'custom_menu_page_callback' ); } add_action('admin_menu', 'custom_menu_page'); // Menu page callback function function custom_menu_page_callback() { global $wpdb; // Retrieve custom table data $table_name = $wpdb->prefix . 'custom_data'; $results = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A); // Display custom table data echo '<div class="wrap">'; echo '<h1>Custom Data</h1>'; // Export to CSV/Excel button echo '<form method="post" action="' . admin_url('admin-post.php') . '">'; echo '<input type="hidden" name="action" value="export_custom_data">'; echo '<button type="submit" class="button">Export to CSV/Excel</button>'; echo '</form>'; // Display data in a table if ($results) { echo '<table>'; echo '<thead><tr><th>Name</th><th>Email</th><th>Phone</th></tr></thead>'; echo '<tbody>'; foreach ($results as $row) { echo '<tr>'; echo '<td>' . $row['name'] . '</td>'; echo '<td>' . $row['email'] . '</td>'; echo '<td>' . $row['phone'] . '</td>'; echo '</tr>'; } echo '</tbody>'; echo '</table>'; } else { echo '<p>No data found.</p>'; } echo '</div>'; } // Export to CSV/Excel action function export_custom_data_action() { global $wpdb; // Retrieve custom table data $table_name = $wpdb->prefix . 'custom_data'; $results = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A); if ($results) { // Set headers for CSV/Excel file header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="custom_data.csv"'); $output = fopen('php://output', 'w'); // Write data rows to CSV/Excel file foreach ($results as $row) { fputcsv($output, $row); } fclose($output); exit; } } add_action('admin_post_export_custom_data', 'export_custom_data_action'); add_action('admin_post_nopriv_export_custom_data', 'export_custom_data_action'); ?>
4. In your WordPress admin dashboard, you will see a new menu page called "Custom Data." Clicking on this menu item will display the custom table data in a table format. The page will also have a button labeled "Export to CSV/Excel" that allows you to download the data in CSV/Excel format.
Note: Make sure to update the table name, column names, and the export file name according to your custom table structure and requirements.
This code creates a custom table, retrieves the data from the table using $wpdb, and displays it in an HTML table on the custom menu page. It also includes a form that, upon submission, triggers an action to export the data to CSV/Excel. The exported file is downloaded with the name "custom_data.csv" and includes the data rows from the custom table.
Comments
Post a Comment