WordPress nhập dữ liệu vào loại bài đăng tùy chỉnh

Kể từ khi Google Trang tính loại bỏ các nguồn cấp dữ liệu JSON gốc, một số dự án của tôi đã bị hỏng và bị bỏ mặc. Một trong những dự án đó là danh sách hoạt động của tôi cho các hội nghị và nhiều thứ tương tự. Vào thứ Ba, chúng tôi được yêu cầu xem lại hồ sơ công việc của mình. Một trong những mục được yêu cầu là “Các ấn phẩm, bản trình bày hoặc danh mục đầu tư trực tuyến có liên quan. ”

Tôi đã tranh luận về việc chuyển dữ liệu trang tính sang WordPress hoặc gặp rắc rối khi tạo lại điểm cuối JSON trong Google Trang tính

Hôm nay, tôi quyết định chuyển sang WordPress. Tôi cho rằng nó mang lại cho tôi sự linh hoạt và khả năng kiểm soát lâu dài hơn

Trong bài viết hôm nay, tôi sẽ chỉ ghi lại cách tôi đã viết trình nhập CSV. Đó là một mẫu tiện dụng mà tôi đã sử dụng nhiều lần trước đây. Đương nhiên, tôi không có trí nhớ nếu tôi đã viết nó trước đó và quá lười để nhìn. Ngoài ra, tôi có một vài chỉnh sửa trên phiên bản này mà tôi khá chắc chắn rằng mình chưa viết ra

Bây giờ tôi đã có một danh sách các hoạt động hơi lỗi thời. Bây giờ tôi phải thêm những thứ tôi đã quên và cải thiện thiết kế. Thật buồn cười khi làm việc liên tục tạo ra nhiều công việc hơn?

Lấy dữ liệu

Không có gì quá lạ mắt ở đây. Tôi đã xuất Google Trang tính dưới dạng CSV và đặt nó vào thư mục có tên 'dữ liệu' trong chủ đề tôi đã tạo. Bạn có thể đặt nó ở bất cứ đâu. Đây chỉ là một lựa chọn dễ dàng đối với tôi. fopen và fgetcsv là các hàm PHP gốc

 $file_path = get_stylesheet_directory() . '/data/activities.csv';
     if(isset($file_path)){
    
        $filename = $file_path;    
    
        $file = fopen($filename, "r");
        fgetcsv($file);
          while (($getData = fgetcsv($file, 1000, ",")) !== FALSE) {
            //DO STUFF HERE LATER PER ROW
           }
      
           fclose($file);  
     }   

Hàng này đến hàng kia

Bây giờ tôi đã đưa trình thu thập CSV đó vào một chức năng để sử dụng dễ dàng hơn sau này

Vòng lặp while đi từng hàng qua CSV. Bạn có thể chọn các cột có dấu ngoặc vuông. Số lượng cột bắt đầu từ 0

Giờ đây, bạn có thể gắn chức năng này vào một nơi nào đó trong một chủ đề và nó sẽ thay đổi tiêu đề để bạn biết rằng tất cả đều đang hoạt động

function tww_parse_csv(){
    $file_path = get_stylesheet_directory() . '/data/activities.csv';
     if(isset($file_path)){
    
        $filename = $file_path;    
    
        $file = fopen($filename, "r");
        fgetcsv($file);
          while (($getData = fgetcsv($file, 1000, ",")) !== FALSE) {
            $title = $getData[0];//GET FIRST COLUMN
            $link = $getData[4];//GET FIFTH COLUMN
                  
            if($title != ''){
                //DO STUFF IF A TITLE EXISTS
                var_dump($title);
            }
           }
      
           fclose($file);  
     }   
}

Tạo nội dung

Bây giờ, chúng tôi đã có các phần phù hợp để lấy CSV và sau đó di chuyển qua từng hàng

Bước tiếp theo là làm gì đó với dữ liệu. Chúng tôi sẽ sử dụng chức năng wp_insert_post() của WordPress

Cuối cùng tôi đã ném 7 biến vào đó cho 7 cột tôi có trong bảng tính ban đầu của mình

function tww_csv_make_activities($title, $description, $year, $month, $type, $conference, $link){
    $args = array(
      'post_title'    => wp_strip_all_tags($title),
      'post_type'     => 'activity',//my custom post type
      'post_status'  => 'publish',//go ahead and publish it 
      'post_content' => $description,
      'tax_input'    => array(
            'years' => $year,//these end up wanting arrays of IDs so we'll make do that translation elsewhere
            'months' => $month,
            'types' => $type,
            'conferences' => $conference,
        ),
    );
    $post_id = wp_insert_post($args);//post gets made with the arguments we set
    add_post_meta($post_id, 'activity_link', $link, true);//just adding a custom field in case I want to do something with this 
}

Thêm Điều khoản phân loại tùy chỉnh và/hoặc Nhận ID

Tôi đã thêm các nguyên tắc phân loại tùy chỉnh cho năm, tháng, loại và hội nghị

Để có thể thêm các cụm từ đó khi CSV được xử lý, tôi cần tạo cụm từ nếu cụm từ đó chưa tồn tại hoặc lấy ID của cụm từ nếu cụm từ đó đã tồn tại. Để làm điều đó, chúng tôi sẽ sử dụng wp_insert_term và term_exists

Đây là phần có lẽ mất nhiều thời gian nhất để đi thẳng và tôi có thể đã quá nhiệt tình với nó nhưng nó hoạt động

function tww_term_checker($term, $tax){
    if($term){//we've got a term to look for right?
         if(!term_exists($term, $tax)){//doesn't exist yet?
           $new = wp_insert_term($term,$tax);
           return $new;
        } else {//exists
            $term = term_exists($term, $tax);
            return $term["term_id"];//get ID
        }

    } else {
        return '';//you get nothing because you had nothing
    }

}

Tất cả cùng nhau bây giờ

Bây giờ bạn có thể thấy ba chức năng cùng nhau

tww_parse_csv lấy csv và lặp qua tất cả các hàng. Đối với tất cả các hàng có tiêu đề, nó gọi tww_csv_make_activities và đặt các biến

Tôi vừa ném chức năng vào tiêu đề của chủ đề và sẽ làm mới trang để chạy nó. Bạn có thể trở nên huyền ảo hơn nhưng đối với những thứ chỉ dùng một lần như thế này thì tôi thấy không cần thiết

Phương pháp ưa thích để thêm loại bài đăng tùy chỉnh trong WordPress là gì?

Bạn có thể tạo bài đăng tùy chỉnh mới trên trang web WordPress của mình bằng cách thực hiện theo các bước bên dưới. .
Nhấp vào loại bài đăng tùy chỉnh đã đăng ký, trong trường hợp của chúng tôi là “Tin tức. ”
Nhấp vào Thêm mới
Nhập tiêu đề và nội dung bài đăng của bạn
Nhập đoạn trích và đặt hình ảnh nổi bật
Nhấp vào nút Xuất bản để đưa bài đăng tùy chỉnh mới vào hoạt động

Phân loại bài tùy chỉnh có phải là phân loại không?

Bạn không thể sử dụng loại bài đăng tùy chỉnh làm phân loại , nhưng bạn có thể có cùng phân loại trên 2 bài đăng tùy chỉnh. Nếu bạn đăng ký ID của sách trong bài đánh giá của mình, bạn có thể tạo mối quan hệ giữa cả hai, đó là điều bạn muốn làm ?