در مدیریت یک سایت وردپرسی، گاهی نیاز دارید لیست کاربران را در قالب یک فایل اکسل (Excel) یا CSV خروجی بگیرید. این کار برای آنالیز کاربران، ارسال ایمیل گروهی، بررسی نقشها، و مدیریت دادهها بسیار کاربردی است. در این مقاله، نحوه انجام این کار را توضیح میدهیم.
چرا باید کاربران وردپرس را به CSV یا Excel خروجی بگیریم؟
مدیریت و آنالیز کاربران: امکان بررسی ایمیلها، نقشها و تاریخ عضویت
استفاده در ابزارهای دیگر: مانند CRM یا سیستمهای اتوماسیون بازاریابی
پشتیبانگیری از لیست کاربران: در صورت نیاز به انتقال اطلاعات
ارسال ایمیل یا پیامک گروهی: بر اساس فیلترهای مختلف
نحوه خروجی گرفتن کاربران وردپرس در فایل CSV
استفاده از افزونه
سادهترین راه برای خروجی گرفتن کاربران، استفاده از افزونههای وردپرسی مانند: 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');
x
113
113
1
function tav_export_users_to_csv() {
2
if (!current_user_can('manage_options')) {
3
wp_die('دسترسی غیرمجاز!');
4
}
5
6
if (!isset($_POST['columns']) || empty($_POST['columns'])) {
7
wp_die('حداقل یک ستون را انتخاب کنید.');
8
}
9
10
$columns = $_POST['columns']; // دریافت ستون•های انتخاب•شده
11
12
// تنظیم هدرهای فایل CSV با کدگذاری صحیح UTF-8
13
header('Content-Encoding: UTF-8');
14
header('Content-Type: text/csv; charset=UTF-8');
15
header('Content-Disposition: attachment; filename="tav_wordpress_users.csv"');
16
17
// اضافه کردن BOM برای نمایش صحیح فارسی در اکسل
18
echo "\xEF\xBB\xBF";
19
20
$output = fopen('php://output', 'w');
21
22
// نوشتن نام ستون•ها (با جداکننده `,`)
23
fputcsv($output, $columns, ',');
24
25
// گرفتن اطلاعات کاربران
26
$users = get_users();
27
28
foreach ($users as $user) {
29
$user_data = [];
30
31
// بررسی و افزودن داده•ها بر اساس ستون•های انتخاب•شده
32
foreach ($columns as $column) {
33
$value = '';
34
switch ($column) {
35
case 'ID':
36
$value = $user->ID;
37
break;
38
case 'user_login':
39
$value = $user->user_login;
40
break;
41
case 'user_email':
42
$value = $user->user_email;
43
break;
44
case 'roles':
45
$value = implode(', ', $user->roles);
46
break;
47
case 'first_name':
48
$value = $user->first_name;
49
break;
50
case 'last_name':
51
$value = $user->last_name;
52
break;
53
case 'user_registered':
54
$value = '="' . date('Y-m-d H:i:s', strtotime($user->user_registered)) . '"'; // حل مشکل تاریخ
55
break;
56
default:
57
$value = '';
58
}
59
60
// تبدیل به UTF-8 فقط اگر فارسی باشد
61
if (!empty($value) && preg_match('/[\x{0600}-\x{06FF}]/u', $value)) {
62
$value = mb_convert_encoding($value, 'UTF-8', 'auto');
63
}
64
65
$user_data[] = $value;
66
}
67
68
// خروجی CSV با جداکننده `,`
69
fputcsv($output, $user_data, ',');
70
}
71
72
fclose($output);
73
exit();
74
}
75
add_action('admin_post_tav_export_users_csv', 'tav_export_users_to_csv');
76
77
function tav_export_users_admin_page() {
78
?>
79
<div class="wrap">
80
<h2>خروجی کاربران وردپرس به CSV</h2>
81
<form method="post" action="<?php echo admin_url('admin-post.php'); ?>">
82
<input type="hidden" name="action" value="tav_export_users_csv">
83
84
<h3>ستون•های موردنظر را انتخاب کنید:</h3>
85
<label><input type="checkbox" name="columns[]" value="ID" checked> ID</label><br>
86
<label><input type="checkbox" name="columns[]" value="user_login" checked> نام کاربری</label><br>
87
<label><input type="checkbox" name="columns[]" value="user_email" checked> ایمیل</label><br>
88
<label><input type="checkbox" name="columns[]" value="roles" checked> نقش</label><br>
89
<label><input type="checkbox" name="columns[]" value="first_name"> نام</label><br>
90
<label><input type="checkbox" name="columns[]" value="last_name"> نام خانوادگی</label><br>
91
<label><input type="checkbox" name="columns[]" value="user_registered"> تاریخ عضویت</label><br>
92
93
<br>
94
<input type="submit" class="button button-primary" value="دانلود CSV">
95
</form>
96
</div>
97
<?php
98
}
99
100
function tav_add_export_users_menu() {
101
add_menu_page(
102
'خروجی CSV کاربران',
103
'خروجی کاربران',
104
'manage_options',
105
'tav-export-users',
106
'tav_export_users_admin_page'
107
);
108
}
109
110
// ثبت اکشن برای دریافت خروجی CSV
111
add_action('admin_menu', 'tav_add_export_users_menu');
112
add_action('admin_post_tav_export_users_csv', 'tav_export_users_to_csv');
113