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