نحوه ایجاد Custom Post Type در وردپرس با کدنویسی
در وردپرس، Custom Post Type یکی از قابلیتهای بسیار مفید و پیشرفته است که به شما امکان میدهد نوع دادههای جدیدی را برای مدیریت محتوا در سایت خود تعریف کنید. به عبارت دیگر، با استفاده از Custom Post Type میتوانید محتوای خاصی مانند محصولات، نویسندگان، یا اخبار را در ساختار وردپرس مدیریت کنید. این موضوع به دلیل قابلیت سفارشیسازی بالا و ساختار مناسب از موارد پرکاربرد در توسعه وبسایتهای مدیریت محتوای وردپرس است.
چرا از Custom Post Type استفاده کنیم؟
Custom Post Type برای ساختارهای خاص محتوا بهتر از Post و Page است. به عنوان مثال، در یک فروشگاه آنلاین، نیاز دارید تا نوع محتوای “محصول” را داشته باشید که هر محصول شامل ویژگیهای خاصی مانند قیمت، تعداد موجودی، یا تصاویر است. این نوع محتوا در وردپرس به صورت پیشفرض وجود ندارد، ولی با Custom Post Type میتوانید آن را ایجاد کنید.
ساختار اصلی Custom Post Type
برای ساخت یک Custom Post Type در وردپرس، از تابع register_post_type() استفاده میکنیم. این تابع دارای پارامترهای متعددی است که هر یک نقش خاصی در ساختار نوع محتوا دارند.
نمونه کد ساده برای ایجاد Custom Post Type
function create_custom_post_type() {
$args = array(
'labels' => array(
'name' => 'محصولات',
'singular_name' => 'محصول'
),
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'thumbnail'),
);
register_post_type('product', $args);
}
add_action('init', 'create_custom_post_type');
در این کد، ما یک Custom Post Type به نام “product” ساختهایم. پارامترهای مهم شامل:
- labels: تعریف برچسبهای نمایشی مانند عنوان و نام تکی.
- public: مشخص میکند که این نوع محتوا در سایت عمومی قابل مشاهده است.
- has_archive: گزینهای که امکان ایجاد صفحه آرشیو برای محتوای این نوع را فعال میکند.
- supports: تعیین کننده ویژگیهایی که در مدیریت محتوا فعال هستند (مانند عنوان، ویرایشگر، تصویر).
پارامترهای مهم برای Custom Post Type
برخی از پارامترهای کلیدی در ساخت Custom Post Type عبارتند از:
| پارامتر | توضیح |
|---|---|
| labels | برچسبها برای نمایش در بخش مدیریت و سایت. |
| public | مشخص میکند که این Post Type قابل مشاهده در سایت است یا نه. |
| has_archive | فعال کردن صفحه آرشیو برای این نوع محتوا. |
| supports | ویژگیهایی که در ویرایشگر فعال هستند. |
| rewrite | تغییر URL محتوای این نوع. |
| menu_position | موقعیت نمایش در منوی مدیریت. |
نمونه پیشرفتهتر Custom Post Type
function create_custom_post_type() {
$args = array(
'labels' => array(
'name' => 'نویسندگان',
'singular_name' => 'نویسنده',
'add_new' => 'افزودن نویسنده جدید',
'edit_item' => 'ویرایش نویسنده',
'new_item' => 'نویسنده جدید'
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'نویسندگان'),
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'menu_position' => 5,
'show_in_rest' => true,
);
register_post_type('author', $args);
}
add_action('init', 'create_custom_post_type');
در این نمونه، ما نوع محتوای “نویسندگان” را ساختهایم. ویژگیهایی که به آن اضافه شدهاند:
- rewrite: تنظیم URL به صورت دلخواه (slug).
- custom-fields: فعال کردن فیلدهای سفارشی برای هر نویسنده.
- show_in_rest: فعال کردن امکان استفاده از REST API برای این نوع محتوا.
نکات مهم و توصیهها
- نام Custom Post Type باید منحصر به فرد باشد و از کاراکترهای غیرمعمول (مثل فارسی) استفاده نشود.
- پارامتر rewrite به دلیل تغییر URL، باید قبل از اعمال تغییرات در سایت تست شود.
- در صورت استفاده از Custom Post Type در قالبهای گرافیکی، مطمئن شوید که آن را در قسمت هدر و فوتر سایت به درستی نمایش دهید.
- برای مدیریت محتوا بهتر است از supports تنها ویژگیهای لازم را استفاده کنید تا بار سرور کاهش یابد.
مشکلات شایع و راهحلها
در مراحل اولیه، ممکن است با مشکلات زیر مواجه شوید:
- خطا در نام Post Type: اگر نام Custom Post Type تکراری یا غیرمعمول باشد، ممکن است وردپرس به دلیل تضاد نام، عمل نکند. راهحل: از نامهای انگلیسی و منحصر به فرد استفاده کنید.
- عدم نمایش در منو: در صورت عدم نمایش Custom Post Type در منو، ممکن است پارامتر show_in_menu نیاز به تنظیم داشته باشد.
بهینهسازی و تست
پس از ایجاد Custom Post Type، باید آن را تست کنید. در این مرحله:
- محتوای جدیدی اضافه کنید.
- در صفحه آرشیو و سایت، محتوای اضافه شده را ببینید.
- در صورت نیاز، از فیلدهای سفارشی (Custom Fields) استفاده کنید.
استفاده از Custom Post Type در قالبها
در قالبهای وردپرس، میتوانید با استفاده از تابع WP_Query محتوای Custom Post Type را نمایش دهید:
$query = new WP_Query(array(
'post_type' => 'product',
'posts_per_page' => 5
));
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
the_title();
the_content();
}
}
این کد اولین 5 محتوای نوع “product” را نمایش میدهد. از طرف دیگر، با استفاده از get_posts() نیز میتوانید محتوا را در قالبهای سادهتر نمایش دهید.
نتیجهگیری
Custom Post Type در وردپرس یک ابزار بسیار قدرتمند برای مدیریت محتوای سفارشی است. با استفاده از آن، میتوانید محتوای خاصی را به شکلی مناسب و سازگار با ساختار وردپرس مدیریت کنید. برای استفاده از این قابلیت، باید پارامترهای مربوطه را به درستی تنظیم کنید تا از عملکرد بهینه و سرعت بالا بهرهمند شوید.
همچنین، در صورت نیاز به پشتیبانی از REST API یا دسترسی از طریق سرویسهای خارجی، از پارامتر show_in_rest استفاده کنید.
در نهایت، تست و اعتبارسنجی محتوای Custom Post Type قبل از انتشار در سایت، بسیار ضروری است تا از اشکالات و مشکلات جلوگیری شود.
آیا این مطلب برای شما مفید بود ؟




