פרטי השיעור
שיעור 5.2: יצירת Custom Post Type ב-WordPress
לפני שנוכל לייבא פוסטים מותאמים אישית, עלינו קודם כל לרשום את סוג הפוסט המותאם אישית ב-WordPress. נלמד איך לעשות זאת באמצעות פונקציה פשוטה ב-PHP.
- יצירת Custom Post Type ב-PHP
ניצור פונקציה לרישום סוג הפוסט המותאם אישית בקובץ functions.php
בתבנית WordPress שלנו, או בקובץ תוסף שאותו נתתקין אחרי זה – רק לשים לב לדוגמאות קוד לתוסף יש הדק אחר טיפה אחבל הקוד זהה.
// פונקציה לרישום Custom Post Type
function create_custom_post_type() {
$labels = array(
'name' => __( 'נכסים' ),
'singular_name' => __( 'נכס' ),
'menu_name' => __( 'נכסים' ),
'name_admin_bar' => __( 'נכס' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'properties' ),
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ),
'show_in_rest' => true, // מאפשר לערוך דרך ממשק ה-REST API
);
register_post_type( 'property', $args ); // רישום סוג הפוסט
}
add_action( 'init', 'create_custom_post_type' );
הסבר הקוד:
register_post_type
: הפונקציה המרכזית שמשמשת לרישום סוג הפוסט המותאם אישית. אנחנו מגדירים את השם, את התוויות ואת התכונות של סוג הפוסט.supports
: מאפשר לנו לקבוע אילו תכונות יהיו זמינות עבור הפוסטים המותאמים אישית. כאן הוספנו את שדות הכותרת, התוכן, התמונה הראשית, והשדות המותאמים אישית.has_archive
: מאפשר לנו להציג ארכיון של סוג הפוסט.
תרחיש נוסף: יצירת סוגי פוסטים מותאמים למוצרים
function create_product_post_type() {
$labels = array(
'name' => __( 'מוצרים' ),
'singular_name' => __( 'מוצר' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'products' ),
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'excerpt' ),
);
register_post_type( 'product', $args );
}
add_action( 'init', 'create_product_post_type' );
function create_product_post_type() {
$labels = array(
'name' => __( 'מוצרים' ),
'singular_name' => __( 'מוצר' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array( 'slug' => 'products' ),
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'excerpt' ),
);
register_post_type( 'product', $args );
}
add_action( 'init', 'create_product_post_type' );