[英]Export User Info into CSV - Additional Column
I'm using the 'Export Users to CSV' a plugin for wordpress. 我使用的是“将用户导出为CSV” wordpress插件。 By default, The plugin only extracts wp_users and wp_usermeta
默认情况下,该插件仅提取wp_users和wp_usermeta
I have been wanting to add post_title column from wp_posts. 我一直想从wp_posts添加post_title列。 I was able to pull out the 'post_title' into the CSV file BUT it's not placed correctly in its respective row.
我能够将“ post_title”拉出到CSV文件中,但未正确放置在其相应行中。
Please see my edited code and original code 请查看我编辑的代码和原始代码
Orignal version: 原始版本:
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";
}
Edited version 编辑版本
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";
}
I hope my explanation is not confusing. 我希望我的解释不要混淆。 Cheers!
干杯!
Here's an image to explain it better : 这是一张更好地解释它的图像:
https://www.dropbox.com/s/xijkb4fp16atcx3/question-jpeg.jpg?dl=0 https://www.dropbox.com/s/xijkb4fp16atcx3/question-jpeg.jpg?dl=0
The problem is that you are using the list of titles as columns, since wp_list_pluck
doesn't retain the column name post_title
. 问题是您将标题列表用作列,因为
wp_list_pluck
不保留列名post_title
。
The approach would be different if you want to use just one title post per user, or you want more, especially since the name for the column will change. 如果您只想为每个用户使用一个标题帖子,或者您想要更多标题帖子,则方法会有所不同,特别是因为该列的名称将更改。
Assuming you want them all, we can create a simple approach that you can improve. 假设您全都想要,我们可以创建一种可以改进的简单方法。
For example, I would say. 例如,我会说。
First, remove these two lines 首先,删除这两行
$post_keys = $wpdb->get_results( "SELECT distinct(post_title) FROM $wpdb->posts" );
$post_keys = wp_list_pluck( $post_keys, 'post_title' );
and change $fields = array_merge( $data_keys, $meta_keys, $post_keys);
并更改
$fields = array_merge( $data_keys, $meta_keys, $post_keys);
by $fields = array_merge( $data_keys, $meta_keys, $post_keys);
通过
$fields = array_merge( $data_keys, $meta_keys, $post_keys);
Then, before 那之前
echo implode( ',', $data ) . "\n";
you add 您添加
$post_keys = $wpdb->get_results( "SELECT distinct(post_title) FROM $wpdb->posts WHERE (post_type LIKE 'page' OR post_type LIKE 'post') and post_status LIKE 'publish' AND post_author = ". $user->ID );
$post_titles = wp_list_pluck( $post_keys, 'post_title');
$data =array_merge ($data, $post_titles);
With this, the column headers for the post titles wont be set, we can improve it to set it if you need it, but you should have already a column per every post title 这样,就不会设置帖子标题的列标题,如果需要,我们可以对其进行改进以进行设置,但是每个帖子标题都应该有一个列
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.