Używam wtyczki "Eksportuj użytkowników do CSV" dla wordpress. Domyślnie wtyczka pobiera tylko wp_users i wp_usermetaEksportuj informacje o użytkowniku do pliku CSV - dodatkowa kolumna
Chciałam dodać kolumnę post_title z wp_posts. Byłem w stanie wyciągnąć "post_title" do pliku CSV, ALE nie został on poprawnie umieszczony w odpowiednim wierszu.
Proszę zobaczyć moje edytowanego kodu i oryginalny kod
wersji Orignal:
global $wpdb;
$data_keys = array(
'ID', 'user_login', 'user_pass',
'user_nicename', 'user_email', 'user_url',
'user_registered', 'user_activation_key', 'user_status',
'display_name'
);
$meta_keys = $wpdb->get_results("SELECT distinct(meta_key) FROM $wpdb->usermeta");
$meta_keys = wp_list_pluck($meta_keys, 'meta_key');
$fields = array_merge($data_keys, $meta_keys);
$headers = array();
foreach ($fields as $key => $field) {
if (in_array($field, $exclude_data))
unset($fields[$key]);
else
$headers[] = '"' . strtolower($field) . '"';
}
echo implode(',', $headers) . "\n";
foreach ($users as $user) {
$data = array();
foreach ($fields as $field) {
$value = isset($user->{$field}) ? $user->{$field} : '';
$value = is_array($value) ? serialize($value) : $value;
$data[] = '"' . str_replace('"', '""', $value) . '"';
}
echo implode(',', $data) . "\n";
}
wersja Zmieniano
global $wpdb;
$data_keys = array(
'ID', 'user_login', 'user_pass',
'user_nicename', 'user_email', 'user_url',
'user_registered', 'user_activation_key', 'user_status',
'display_name'
);
$meta_keys = $wpdb->get_results("SELECT distinct(meta_key) FROM $wpdb->usermeta");
$meta_keys = wp_list_pluck($meta_keys, 'meta_key');
$post_keys = $wpdb->get_results("SELECT distinct(post_title) FROM $wpdb->posts");
$post_keys = wp_list_pluck($post_keys, 'post_title');
$fields = array_merge($data_keys, $meta_keys, $post_keys);
$headers = array();
foreach ($fields as $key => $field) {
if (in_array($field, $exclude_data))
unset($fields[$key]);
else
$headers[] = '"' . strtolower($field) . '"';
}
echo implode(',', $headers) . "\n";
foreach ($users as $user) {
$data = array();
foreach ($fields as $field) {
$value = isset($user->{$field}) ? $user->{$field} : '';
$value = is_array($value) ? serialize($value) : $value;
$data[] = '"' . str_replace('"', '""', $value) . '"';
}
echo implode(',', $data) . "\n";
}
Mam nadzieję, że moje wyjaśnienie nie jest mylące. Twoje zdrowie!
Oto zdjęcie, aby wyjaśnić to lepiej:
https://www.dropbox.com/s/xijkb4fp16atcx3/question-jpeg.jpg?dl=0
Właściwie nie mam racji, twój kod nie wyciągnij tytuły postów, ale nie są one ułożone według użytkowników. tytuły postów pojawiały się w dużych, długich poziomych komórkach: sprawdź to https://www.dropbox.com/s/xijkb4fp16atcx3/question-jpeg.jpg?dl=0 na końcu obrazu, to układ wyników, który Chcę –
Czy możesz sprawdzić, czy zrobiłem dobrze: http://prntscr.com/93967h –
usunąć '' 'after' FROM $ wpdb-> posts' –