Title 'Export', // link text 'export_artisans_datas', // user capabilities - changé pour n'autoriser que les éditeurs et supérieurs 'export_datas', // page slug 'export_datas_page_callback', // this function prints the page content 'dashicons-external', // icon (from Dashicons for example) 12 // menu position ); } function export_datas_page_callback() { ?>

Exports de données

Export des artisans

Exporter les données des artisans au format CSV.

'artisans', 'posts_per_page' => -1, // Récupérer tous les posts 'post_status' => 'publish', ); $artisans = new WP_Query($args); // Vérifier si des posts ont été trouvés if (empty($artisans)) { wp_die('Aucun post trouvé pour le type "artisans".'); } // Définir le nom du fichier CSV $filename = 'artisans_data_' . date('Ymd_His') . '.csv'; // Ouvrir un fichier CSV en mode écriture $file = fopen($filename, 'w'); if ($file === false) { wp_die('Erreur lors de la création du fichier CSV.'); } // Ajouter les en-têtes du CSV fputcsv($file, ['Artisan', 'N° Téléphone', 'Mail', 'Adresse', 'Site web', 'TVA', 'Statut de travail', 'Conseiller', 'Dernière Action', 'Commentaire', 'ID de l\'artisan', 'Date de création',]); // Boucler sur chaque post et écrire les données dans le CSV foreach ($artisans->posts as $artisan) { $postID = $artisan->ID; $phoneNumber = get_field('phone_number', $postID); $formattedPhoneNumber = preg_replace('/^(\+\d{2})(\d{3})(\d{2})(\d{2})(\d{2})$/', '$1 $2 $3 $4 $5', $phoneNumber); $email = get_field('email', $postID); $website = get_field('website', $postID); $vat_number = get_field('vat_number', $postID); $tva = $vat_number ? format_belgian_vat_number($vat_number) : ''; $adresseDatas = get_field('adresse', $postID); $street_number = isset($adresseDatas['street_number']) ? $adresseDatas['street_number'] . ' ' : ''; $street_name = isset($adresseDatas['street_name']) ? $adresseDatas['street_name'] . ', ' : ''; $post_code = isset($adresseDatas['post_code']) ? $adresseDatas['post_code'] . ' ' : ''; $city = isset($adresseDatas['city']) ? $adresseDatas['city'] : ''; $adresse = $street_number . $street_name . $post_code . ' ' . $city; $conseiller = getArtisanConseillerName($postID) ?? ''; $requiredAction = get_field('required_action', $postID); $lastAction = get_field('last_action', $postID); $lastActionComment = $lastAction['comments'] ?? ''; $lastActionDate = $lastAction['last_contact_date'] ?? ''; $mdp_status = get_field('mdp_status', $postID)['label'] ?? ''; // Formater la date pour la rendre plus lisible if (!empty($lastActionDate)) { $lastActionDate = date('d/m/Y', strtotime($lastActionDate)); } write_log($mdp_status); fputcsv($file, [ $artisan->post_title, $formattedPhoneNumber, $email, $adresse, $website, $tva, $mdp_status, $conseiller, $lastActionDate, $lastActionComment, $artisan->ID, $artisan->post_date, ]); } // Fermer le fichier fclose($file); // Télécharger le fichier CSV header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename="' . $filename . '"'); readfile($filename); // Supprimer le fichier après téléchargement unlink($filename); exit(); }