0
저는 WordPress 용 csv 가져 오기 플러그인의 수정 된 버전을 사용했습니다. csv를 가져 와서 게시물을 만들고 업데이트합니다. 기존 게시물을 업데이트하려면 제목별로 게시물 ID를 찾는 편집을 추가 한 다음 기존 ID가 있으면 덮어 쓰거나 그렇지 않으면 새 게시물을 만듭니다.Wordpress CSV 가져 오기 중복
문제는 매우 안정적이지 않은 것 같습니다. 동일한 CSV 파일을 여러 번 가져 오면 대부분의 파일을 덮어 쓰지 만 몇 개의 중복 파일이 생깁니다. 더 신뢰할 수있는 방법이 있습니까, 아니면 중복 된 게시물을 처리 할 수있는 다른 방법이 있습니까? 여기
function create_post($data, $options) {
extract($options);
//edit 1 added here
global $wpdb;
//end
$data = array_merge($this->defaults, $data);
$type = $data['csv_post_type'] ? $data['csv_post_type'] : 'post';
$valid_type = (function_exists('post_type_exists') &&
post_type_exists($type)) || in_array($type, array('post', 'page'));
if (!$valid_type) {
$this->log['error']["type-{$type}"] = sprintf(
'Unknown post type "%s".', $type);
}
$new_post = array(
'post_title' => convert_chars($data['csv_post_title']),
'post_content' => wpautop(convert_chars($data['csv_post_post'])),
'post_status' => $opt_draft,
'post_type' => $type,
'post_date' => $this->parse_date($data['csv_post_date']),
'post_excerpt' => convert_chars($data['csv_post_excerpt']),
'post_name' => $data['csv_post_slug'],
'post_author' => $this->get_auth_id($data['csv_post_author']),
'tax_input' => $this->get_taxonomies($data),
'post_parent' => $data['csv_post_parent'],
);
// edit 2 here
$new_post['ID'] = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_title = '" . $data['csv_post_title'] . "'");
// ends
// pages don't have tags or categories
if ('page' !== $type) {
$new_post['tags_input'] = $data['csv_post_tags'];
// Setup categories before inserting
$cats = $this->create_or_get_categories($data, $opt_cat);
$new_post['post_category'] = $cats['post'];
}
// edit 3
if(!empty($new_post['ID'])) {
$id = wp_update_post($new_post);
} else {
$id = wp_insert_post($new_post);
}
// ends
if ('page' !== $type && !$id) {
// cleanup new categories on failure
foreach ($cats['cleanup'] as $c) {
wp_delete_term($c, 'category');
}
}
return $id;
}
감사
내 플러그인 CSV 2 POST에는이 항목이 채택되었습니다. 가능하면 데이터를 잘 알지 못하면 post_name/permalink에서 비교할 것을 권장합니다. 제목 (post_title)에 중복 값이있을 수 있습니다. –