Sto utilizzando "Esporta utenti in CSV" un plug-in per wordpress. Per impostazione predefinita, il plugin estrae solo wp_users e wp_usermetaEsporta informazioni utente in CSV - Colonna aggiuntiva
Desidero aggiungere colonna post_title da wp_posts. Sono stato in grado di estrarre il 'post_title' nel file CSV, MA non è posizionato correttamente nella rispettiva riga.
Si prega di vedere il mio codice modificato e codice originale
versione 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";
}
versione modificata
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";
}
Spero che la mia spiegazione non è fonte di confusione. Saluti!
Ecco un'immagine per spiegare meglio:
https://www.dropbox.com/s/xijkb4fp16atcx3/question-jpeg.jpg?dl=0
In realtà ho sbagliato, il tuo codice ha fatto estraete i titoli dei post, ma non sono organizzati per utente. i titoli dei post sono usciti in lunghe celle orizzontali di grandi dimensioni: controlla questo https://www.dropbox.com/s/xijkb4fp16atcx3/question-jpeg.jpg?dl=0 alla fine dell'immagine, questo è il layout dei risultati che voglio –
Puoi controllare se ho fatto bene: http://prntscr.com/93967h –
rimuovere '' 'dopo' FROM $ wpdb-> posts' –