פרטי השיעור
שיעור 5.4: יבוא פוסטים מותאמים אישית מקובץ CSV
במקרים רבים נרצה לייבא נתונים מקבצי CSV לתוך סוגי פוסטים מותאמים אישית ב-WordPress. למשל, נרצה לייבא רשימת נכסים ממערכת חיצונית.
הכנת קובץ ה-CSV
לדוגמה בסיסית נגיד שהקובץ יכיל את המידע הבא:
title,description,price,rooms,size,floor,owner_id
דירה 1,דירה גדולה במרכז העיר,1000000,4,120,2,1
דירה 2,דירה קטנה בצפון העיר,500000,2,80,1,2
כתיבת סקריפט PHP ליבוא נתונים מ-CSV ל-CPT
הנה דוגמת סקריפט PHP שיטפל בייבוא הנתונים מהקובץ שלכם למסד הנתונים:
<?php
// חיבור למסד הנתונים של WordPress
require_once( 'wp-load.php' );
// קריאת קובץ ה-CSV
$file = fopen('properties.csv', 'r');
// דילוג על שורת הכותרות
fgetcsv($file);
while (($row = fgetcsv($file)) !== FALSE) {
// יצירת הפוסט המותאם אישית
$post_id = wp_insert_post(array(
'post_title' => $row[0],
'post_content' => $row[1],
'post_type' => 'property',
'post_status' => 'publish',
));
// הוספת שדות מותאמים אישית
if ($post_id) {
update_post_meta($post_id, 'price', $row[2]);
update_post_meta($post_id, 'rooms', $row[3]);
update_post_meta($post_id, 'size', $row[4]);
update_post_meta($post_id, 'floor', $row[5]);
update_post_meta($post_id, 'owner_id', $row[6]);
}
}
fclose($file);
echo "Data imported successfully!";
?>
הסבר הקוד:
wp_insert_post
: פונקציה שמכניסה פוסט חדש ל-WordPress. כאן אנחנו מגדירים את הכותרת, התוכן, סוג הפוסט והמעמד של הפוסט.update_post_meta
: פונקציה להוספת שדות מותאמים אישית לפוסט, כמו מחיר, מספר חדרים וגודל הבית.fgetcsv
: פונקציה מובנית ב-PHP לקריאת קבצי CSV שורה-אחר-שורה.
תרחיש נוסף: יבוא מוצרים ל-CPT של מוצרים
<?php
require_once( 'wp-load.php' );
$file = fopen('products.csv', 'r');
fgetcsv($file);
while (($row = fgetcsv($file)) !== FALSE) {
$post_id = wp_insert_post(array(
'post_title' => $row[0],
'post_content' => $row[1],
'post_type' => 'product',
'post_status' => 'publish',
));
if ($post_id) {
update_post_meta($post_id, 'price', $row[2]);
update_post_meta($post_id, 'sku', $row[3]);
update_post_meta($post_id, 'stock', $row[4]);
}
}
fclose($file);
echo "Products imported successfully!";
?>
<?php
require_once( 'wp-load.php' );
$file = fopen('products.csv', 'r');
fgetcsv($file);
while (($row = fgetcsv($file)) !== FALSE) {
$post_id = wp_insert_post(array(
'post_title' => $row[0],
'post_content' => $row[1],
'post_type' => 'product',
'post_status' => 'publish',
));
if ($post_id) {
update_post_meta($post_id, 'price', $row[2]);
update_post_meta($post_id, 'sku', $row[3]);
update_post_meta($post_id, 'stock', $row[4]);
}
}
fclose($file);
echo "Products imported successfully!";
?>