2013-07-19 5 views
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; 
} 

감사

+0

내 플러그인 CSV 2 POST에는이 항목이 채택되었습니다. 가능하면 데이터를 잘 알지 못하면 post_name/permalink에서 비교할 것을 권장합니다. 제목 (post_title)에 중복 값이있을 수 있습니다. –

답변

0

고정을 게시물을 작성하기위한

주요 기능! 나는 내장 된 wordpress 함수 인 get_page_by_title을 사용했다. 올바른 게시물을 대상으로 사용했던 코드는 다음과 같습니다.

if (!get_page_by_title($bpp_title, 'OBJECT', 'publications')) { 


    $id = wp_insert_post($new_post); 

    } else { 

     $bpp_page = get_page_by_title($bpp_title, 'OBJECT', 'publications'); 
     $new_post['ID'] = $bpp_page->ID; 

     $id = wp_update_post($new_post); 

    }