Plugin for adding excel sheets to acf fields
Tue Dec 17 2024 06:32:46 GMT+0000 (Coordinated Universal Time)
Saved by @sayali14
// Create an Options Page
add_action('admin_menu', 'acf_repeater_import_menu');
function acf_repeater_import_menu() {
add_menu_page(
'ACF Repeater Import', // Page Title
'ACF Import', // Menu Title
'manage_options', // Capability
'acf-repeater-import', // Menu Slug
'acf_repeater_import_page', // Callback Function
'dashicons-upload', // Icon
20 // Position
);
}
function acf_repeater_import_page() {
?>
<div class="wrap">
<h1>Import CSV into ACF Repeater Field</h1>
<form method="post" enctype="multipart/form-data">
<input type="file" name="acf_csv_file" required>
<input type="hidden" name="acf_import_nonce" value="<?php echo wp_create_nonce('acf_import'); ?>">
<button type="submit" class="button button-primary">Import CSV</button>
</form>
</div>
<?php
// Check if form is submitted
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acf_import_nonce'])) {
if (!wp_verify_nonce($_POST['acf_import_nonce'], 'acf_import')) {
echo '<div class="notice notice-error"><p>Nonce verification failed!</p></div>';
return;
}
// Check if file is uploaded
if (!empty($_FILES['acf_csv_file']['tmp_name'])) {
$file = $_FILES['acf_csv_file']['tmp_name'];
// Call the import function
acf_import_csv_to_repeater($file);
} else {
echo '<div class="notice notice-error"><p>Please upload a CSV file.</p></div>';
}
}
}
function acf_import_csv_to_repeater($file) {
// The page ID where the ACF repeater field exists
$page_id = 1004; // Replace with your page ID
// The ACF field key for the repeater field
$acf_field_key = 'exhibitor_list'; // Replace with your repeater field key
// Read the CSV file
$repeater_data = [];
if (($handle = fopen($file, "r")) !== FALSE) {
// Read the CSV header (optional)
$header = fgetcsv($handle);
// Loop through the CSV rows
while (($row = fgetcsv($handle)) !== FALSE) {
$repeater_data[] = [
'column_one' => $row[0], // Replace with the key of your ACF subfield
'column_two' => $row[1], // Replace with the key of your ACF subfield
'column_three' => $row[2], // Replace with the key of your ACF subfield
// Add more subfields as needed
];
}
fclose($handle);
}
// Update the ACF repeater field with the data
if (!empty($repeater_data)) {
update_field($acf_field_key, $repeater_data, $page_id);
echo '<div class="notice notice-success"><p>Repeater field updated successfully!</p></div>';
} else {
echo '<div class="notice notice-error"><p>No data to import.</p></div>';
}
}



Comments