사용자 정보를 CSV로 내보내기 - 추가 컬럼
워드프레스용 플러그인을 'Export Users to CSV'로 사용하고 있습니다.기본적으로 플러그인은 wp_users와 wp_usermeta만 추출합니다.
wp_posts에서 post_title column을 추가하고 싶습니다.CSV 파일에 'post_title'을 꺼낼 수 있었지만 각 행에 올바르게 배치되지 않았습니다.
편집한 코드와 오리지널 코드를 봐주세요.
오리그널 버전:
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
문제는 제목 목록을 열로 사용한다는 것입니다.wp_list_pluck
열 이름을 유지하지 않습니다.post_title
.
사용자당 제목 게시물을 하나만 사용하는 경우 또는 열 이름이 변경되므로 더 많은 제목을 사용하는 경우 접근 방식이 달라집니다.
고객이 모든 것을 필요로 하는 경우, 델은 고객이 개선할 수 있는 간단한 접근방식을 만들 수 있습니다.
예를 들어, 나는 말할 것이다.
먼저 이 두 줄을 제거합니다.
$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);
타고$fields = array_merge( $data_keys, $meta_keys, $post_keys);
그러면 그 전에
echo implode( ',', $data ) . "\n";
추가하다
$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);
이것에 의해, 투고 타이틀의 열 헤더는 설정되지 않기 때문에, 필요에 따라서 설정할 수 있습니다만, 각 투고 타이틀 마다 열이 이미 설정되어 있을 것입니다.
언급URL : https://stackoverflow.com/questions/33624841/export-user-info-into-csv-additional-column
'sourcecode' 카테고리의 다른 글
Oracle SQL: 다른 테이블의 데이터로 테이블 업데이트 (0) | 2023.02.27 |
---|---|
WordPress에서 XML-RPC가 활성화되었는지 확인하는 방법 (0) | 2023.02.27 |
NodeJS에서 JSON이 비어 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.02.27 |
jQuery 내의 WordPress 템플릿 디렉토리에 대한 경로? (0) | 2023.02.27 |
Yaml의 목록과 Spring Boot의 객체 목록 매핑 (0) | 2023.02.27 |