در مدیریت یک سایت وردپرسی، گاهی نیاز دارید لیست کاربران را در قالب یک فایل اکسل (Excel) یا CSV خروجی بگیرید. این کار برای آنالیز کاربران، ارسال ایمیل گروهی، بررسی نقشها، و مدیریت دادهها بسیار کاربردی است. در این مقاله، نحوه انجام این کار را توضیح میدهیم.
📌 چرا باید کاربران وردپرس را به CSV یا Excel خروجی بگیریم؟
✅ مدیریت و آنالیز کاربران: امکان بررسی ایمیلها، نقشها و تاریخ عضویت
✅ استفاده در ابزارهای دیگر: مانند CRM یا سیستمهای اتوماسیون بازاریابی
✅ پشتیبانگیری از لیست کاربران: در صورت نیاز به انتقال اطلاعات
✅ ارسال ایمیل یا پیامک گروهی: بر اساس فیلترهای مختلف
📌 نحوه خروجی گرفتن کاربران وردپرس در فایل CSV
1️⃣ استفاده از افزونه
سادهترین راه برای خروجی گرفتن کاربران، استفاده از افزونههای وردپرسی مانند:
🔹 WP All Export (نسخه رایگان و پولی)
🔹 Export Users to CSV
🔹 User Data Export
function tav_export_users_to_csv() { if (!current_user_can('manage_options')) { wp_die('دسترسی غیرمجاز!'); } if (!isset($_POST['columns']) || empty($_POST['columns'])) { wp_die('حداقل یک ستون را انتخاب کنید.'); } $columns = $_POST['columns']; // دریافت ستونهای انتخابشده // تنظیم هدرهای فایل CSV با کدگذاری صحیح UTF-8 header('Content-Encoding: UTF-8'); header('Content-Type: text/csv; charset=UTF-8'); header('Content-Disposition: attachment; filename="tav_wordpress_users.csv"'); // اضافه کردن BOM برای نمایش صحیح فارسی در اکسل echo "\xEF\xBB\xBF"; $output = fopen('php://output', 'w'); // نوشتن نام ستونها (با جداکننده `,`) fputcsv($output, $columns, ','); // گرفتن اطلاعات کاربران $users = get_users(); foreach ($users as $user) { $user_data = []; // بررسی و افزودن دادهها بر اساس ستونهای انتخابشده foreach ($columns as $column) { $value = ''; switch ($column) { case 'ID': $value = $user->ID; break; case 'user_login': $value = $user->user_login; break; case 'user_email': $value = $user->user_email; break; case 'roles': $value = implode(', ', $user->roles); break; case 'first_name': $value = $user->first_name; break; case 'last_name': $value = $user->last_name; break; case 'user_registered': $value = '="' . date('Y-m-d H:i:s', strtotime($user->user_registered)) . '"'; // حل مشکل تاریخ break; default: $value = ''; } // تبدیل به UTF-8 فقط اگر فارسی باشد if (!empty($value) && preg_match('/[\x{0600}-\x{06FF}]/u', $value)) { $value = mb_convert_encoding($value, 'UTF-8', 'auto'); } $user_data[] = $value; } // خروجی CSV با جداکننده `,` fputcsv($output, $user_data, ','); } fclose($output); exit(); } add_action('admin_post_tav_export_users_csv', 'tav_export_users_to_csv'); function tav_export_users_admin_page() { ?> <div class="wrap"> <h2>خروجی کاربران وردپرس به CSV</h2> <form method="post" action="<?php echo admin_url('admin-post.php'); ?>"> <input type="hidden" name="action" value="tav_export_users_csv"> <h3>ستونهای موردنظر را انتخاب کنید:</h3> <label><input type="checkbox" name="columns[]" value="ID" checked> ID</label><br> <label><input type="checkbox" name="columns[]" value="user_login" checked> نام کاربری</label><br> <label><input type="checkbox" name="columns[]" value="user_email" checked> ایمیل</label><br> <label><input type="checkbox" name="columns[]" value="roles" checked> نقش</label><br> <label><input type="checkbox" name="columns[]" value="first_name"> نام</label><br> <label><input type="checkbox" name="columns[]" value="last_name"> نام خانوادگی</label><br> <label><input type="checkbox" name="columns[]" value="user_registered"> تاریخ عضویت</label><br> <br> <input type="submit" class="button button-primary" value="دانلود CSV"> </form> </div> <?php } function tav_add_export_users_menu() { add_menu_page( 'خروجی CSV کاربران', 'خروجی کاربران', 'manage_options', 'tav-export-users', 'tav_export_users_admin_page' ); } // ثبت اکشن برای دریافت خروجی CSV add_action('admin_menu', 'tav_add_export_users_menu'); add_action('admin_post_tav_export_users_csv', 'tav_export_users_to_csv');