تابع register_post_type در وردپرس
تابع register_post_type() یکی از پرکاربردترین توابع در وردپرس است که به توسعهدهندگان امکان میدهد نوع نوشتههای جدیدی (Custom Post Types) را ایجاد کنند. با استفاده از این تابع، میتوانید ساختارهای محتوایی سفارشی مانند «نمونهکارها»، «محصولات»، «رویدادها» یا هر نوع محتوای دیگری را در وردپرس تعریف کنید.
کاربرد تابع register_post_type()
بهصورت پیشفرض، وردپرس دارای چند نوع پست داخلی مانند post، page، attachment و revision است. اما اگر بخواهید ساختار خاصی برای نوع محتوای خود داشته باشید، باید از تابع register_post_type() استفاده کنید.
ساختار کلی تابع register_post_type()
register_post_type( string $post_type, array|string $args = array() )
- $post_type: نام یکتای نوع پست (به صورت اسلاگ یا slug). این مقدار باید فقط شامل حروف کوچک، عدد و زیرخط (_) باشد و حداکثر ۲۰ کاراکتر.
- $args: آرایهای از تنظیمات و ویژگیهای مربوط به نوع پست مانند عنوان، آیکون، سطح دسترسی، پشتیبانیها و غیره.
مثال ساده از تعریف یک Custom Post Type
function my_custom_post_type() {
register_post_type('portfolio', array(
'labels' => array(
'name' => __('نمونهکارها'),
'singular_name' => __('نمونهکار'),
'add_new' => __('افزودن نمونهکار جدید'),
'edit_item' => __('ویرایش نمونهکار'),
'new_item' => __('نمونهکار جدید'),
'view_item' => __('مشاهده نمونهکار'),
'search_items' => __('جستجوی نمونهکارها'),
'not_found' => __('هیچ نمونهکاری یافت نشد'),
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'portfolio'),
'menu_icon' => 'dashicons-portfolio',
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'comments'),
));
}
add_action('init', 'my_custom_post_type');
در این مثال، نوع پستی با نام portfolio ساختهایم. این نوع پست دارای تنظیماتی مانند عنوان فارسی، پشتیبانی از تصویر شاخص و قابلیت بایگانی است.
توضیح آرگومانهای کلیدی:
- labels: شامل تمام متنهای نمایشی برای قسمتهای مختلف در پنل مدیریت است.
- public: اگر مقدار آن
trueباشد، پست عمومی و در سمت کاربر نمایش داده میشود. - has_archive: اجازه میدهد که صفحهای برای آرشیو این نوع پستها ایجاد شود.
- rewrite: برای تعیین ساختار لینک (permalink) استفاده میشود.
- supports: قابلیتهای پشتیبانیشده توسط نوع پست (مانند ویرایشگر، تصویر شاخص و غیره).
افزودن نوع پست به منوی مدیریت وردپرس
اگر مقدار show_in_menu برابر با true باشد، نوع پست در منوی پیشخوان نمایش داده میشود. همچنین میتوان آیکون اختصاصی تعریف کرد.
register_post_type('books', array(
'labels' => array('name' => __('کتابها')),
'public' => true,
'show_in_menu' => true,
'menu_icon' => 'dashicons-book',
'supports' => array('title', 'editor', 'thumbnail'),
));
در اینجا، نوع پست کتابها با آیکون مخصوص در منوی پیشخوان نمایش داده میشود.
پشتیبانی از قابلیتهای سفارشی در Custom Post Type
گاهی اوقات نیاز داریم نوع پست ما فقط از ویژگی خاصی مانند تصویر شاخص یا ویرایشگر پشتیبانی کند. در این صورت از پارامتر supports استفاده میکنیم.
| ویژگی | کاربرد |
|---|---|
| title | نمایش فیلد عنوان |
| editor | فعالسازی ویرایشگر محتوا |
| thumbnail | پشتیبانی از تصویر شاخص |
| excerpt | فعالسازی چکیده مطلب |
| comments | امکان ارسال دیدگاه |
بهینهسازی برای سئو
در هنگام ایجاد Custom Post Type، تنظیمات URL و نمایش در نتایج جستجو بسیار مهم است. برای این منظور از پارامتر rewrite استفاده میشود:
'rewrite' => array(
'slug' => 'projects',
'with_front' => false
)
با این تنظیم، آدرس پستها بهصورت https://yourdomain.com/projects/post-name خواهد بود که برای سئو بهتر و قابل فهمتر است.
نمایش پستهای سفارشی در قالب
برای نمایش پستهای یک Custom Post Type در قالب، میتوانید از کوئری اختصاصی استفاده کنید:
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => 10
);
$query = new WP_Query($args);
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
the_title('<h2>', '</h2>');
the_content();
endwhile;
endif;
wp_reset_postdata();
در این قطعه کد، پستهای نوع «portfolio» واکشی و نمایش داده میشوند. استفاده از wp_reset_postdata() باعث بازگرداندن کوئری اصلی وردپرس بعد از اجرای کوئری سفارشی میشود.
نکات مهم در استفاده از register_post_type()
- همیشه نام یکتای نوع پست را کوتاه و گویا انتخاب کنید.
- از افزودن نوع پست در داخل حلقهها یا توابعی مانند
template_redirectخودداری کنید. بهترین محل، هوکinitاست. - بعد از تغییر slug، حتماً لینکهای ثابت (Permalinks) را از بخش تنظیمات بازسازی کنید.
- اگر قصد دارید نوع پست در REST API در دسترس باشد، از پارامتر
show_in_rest => trueاستفاده کنید تا با گوتنبرگ و API سازگار باشد.
نمونه پیشرفته با REST API
register_post_type('movies', array(
'labels' => array('name' => __('فیلمها')),
'public' => true,
'show_in_rest' => true,
'menu_icon' => 'dashicons-format-video',
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'comments'),
'rewrite' => array('slug' => 'movies'),
));
در این مثال، نوع پست «فیلمها» علاوه بر نمایش در سایت، از طریق REST API نیز قابل دسترسی است که برای توسعه اپلیکیشنهای وردپرسی بسیار مفید است.
مزایای استفاده از Custom Post Type
- سازماندهی بهتر محتوا در سایتهای بزرگ.
- امکان ایجاد صفحات مدیریت مجزا برای انواع دادهها.
- بهبود ساختار سئو و تجربه کاربری.
- افزایش انعطافپذیری قالبها و پلاگینها.
جمعبندی
تابع register_post_type() پایه و اساس ساخت محتوای سفارشی در وردپرس است. با استفاده درست از این تابع میتوانید وردپرس را از یک سیستم وبلاگی ساده به یک CMS حرفهای و چندمنظوره تبدیل کنید. رعایت اصولی مانند استفاده از آرگومانهای مناسب، رعایت استاندارد نامگذاری و بهینهسازی URL برای سئو، از نکات کلیدی در استفاده از این تابع محسوب میشود.
آیا این مطلب برای شما مفید بود ؟




