ویژگی تصویر

تابع register_post_type در وردپرس

  /  وردپرس   /  تابع register_post_type در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

تابع 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 برای سئو، از نکات کلیدی در استفاده از این تابع محسوب می‌شود.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: