【发布时间】:2016-02-11 00:38:17
【问题描述】:
我正在使用 'Export Users to CSV' 一个 wordpress 插件。默认情况下,插件只提取 wp_users 和 wp_usermeta
我一直想从 wp_posts 添加 post_title 列。我能够将“post_title”提取到 CSV 文件中,但它没有正确放置在相应的行中。
请看我修改后的代码和原代码
原版:
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";
}
修改后的版本
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";
}
我希望我的解释不会令人困惑。干杯!
这里有一张图片可以更好地解释它:
https://www.dropbox.com/s/xijkb4fp16atcx3/question-jpeg.jpg?dl=0
【问题讨论】: