ثبت پست تایپ سفارشی در وردپرس (Custom Post Type)
با تابع `register_post_type` درون اکشن `init` پست تایپ جدید با پشتیبانی از گوتنبرگ (`'show_in_rest' => true`) بسازید.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* ثبت پست تایپ سفارشی نمونه کارها (Portfolio) با استانداردهای مدرن وردپرس
*/
function bisco_register_portfolio_cpt() {
$labels = array(
'name' => 'نمونه کارها',
'singular_name' => 'نمونه کار',
'menu_name' => 'نمونه کارها',
'add_new' => 'افزودن نمونه کار',
'add_new_item' => 'افزودن نمونه کار جدید',
'edit_item' => 'ویرایش نمونه کار',
'new_item' => 'نمونه کار جدید',
'view_item' => 'مشاهده نمونه کار',
'search_items' => 'جستجوی نمونه کارها',
'not_found' => 'هیچ نمونه کاری یافت نشد',
'not_found_in_trash' => 'در زبالهدان موردی یافت نشد',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_rest' => true, // فعالسازی ویرایشگر گوتنبرگ و REST API
'query_var' => true,
'rewrite' => array( 'slug' => 'portfolio', 'with_front' => false ),
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => 5,
'menu_icon' => 'dashicons-portfolio',
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'revisions' ),
);
register_post_type( 'portfolio', $args );
}
add_action( 'init', 'bisco_register_portfolio_cpt' );
کد را کجا قرار دهیم؟ (Placement Guide)
کد را در functions.php قرار دهید و سپس حتماً یکبار به مسیر «تنظیمات > پیوندهای یکتا» در پیشخوان رفته و دکمه «ذخیره تغییرات» را بزنید.
این کد چگونه کار میکند؟ (How it Works)
هسته وردپرس متدهای کوئری و پنل مدیریتی جدید را با کلید 'portfolio' ایجاد کرده و مسیر URL را به عنوان یک اندپوینت معتبر ثبت میکند.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
هنگام توسعه قالب اختصاصی برای تفکیک دادههای سایت مانند خدمات، کتابها، پروژهها از وبلاگ عادی.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
اگر دادههای شما صرفاً ماهیت مقاله وبلاگی دارند.
پیشنیازهای اجرا
وردپرس ۵.۰ به بالا.
نحوه تست و اطمینان از عملکرد
به منوی سمت راست پیشخوان نگاه کنید؛ منوی جدید «نمونه کارها» اضافه شده و ثبت نوشته در آن با گوتنبرگ به درستی عمل میکند.
نحوه بازگردانی سریع (Rollback)
تابع را حذف کنید (نوشتهها در دیتابیس محفوظ میمانند اما نمایش داده نمیشوند).
خطاهای رایج و راهحل رفع
فراموش کردن flush پیوندهای یکتا که منجر به ارور 404 در مشاهده تکی پستها میشود.
ملاحظات و نکات امنیتی
قابلیت دسترسی با capability_type محدود به نقشهای مجاز است.
تاثیر بر سرعت و پرفورمنس
استفاده از CPT سبکتر از نصب افزونههای سنگین رابط کاربری است.