פרטי הקורס
מבוא לאופטימיזציה של מסדי נתונים
0/1
חלק 6: בניית סקריפט ייבוא מותאם אישית
חלק 7: בניית סקריפטים מותאמים אישית לייבוא נתונים
קורס: אופטימיזציה לביצועי מסדי נתונים וייבוא קבצים גדולים ל-WordPress
פרטי השיעור

שיעור 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!";
?>

צפיות מבקרים: 7