تعریف Custom Post Type در وردپرس – مقدمه:

در نهمین قسمت از چک لیست طراحی قالب وردپرس ، با یک سناریو واقعی برای ساخت قالب وردپرس ، می خواهیم تا با تعریف Custom Post Type ، یک پست سفارشی در وردپرس ایجاد کنیم.

در این قسمت با نحوه کار تابع register_post_type آشنا خواهیم شد و در می یابیم که برای ساخت یک پست سفارشی، چه پارامترهایی را باید داخل آن تنظیم نماییم.

تعریف Custom Post Type یکی از اصلی ترین ویژگی های وردپرس برای سفارشی سازی آن است. با یادگیری نحوه تعریف Custom Post Type در وردپرس، شما قابلیت سفارشی سازی هر محتوایی را در وردپرس خواهید داشت.

تعریف Custom Post Type در وردپرس

بخش اول: تعریف Custom Post Type در وردپرس

سایت رسمی وردپرس، تعریف Custom Post Type را در قالب وردپرس پیشنهاد نمی کند. دلیل این کار این می باشد که کلیه اطلاعات مربوط به آن پست سفارشی با سوئیچ کردن قالب توسط کاربر، همه ناپدید خواهد شد. بنابراین پیشنهاد وردپرس این است که به جای تعریف Custom Post Type در قالب از تعریف آن در پلاگین استفاده شود تا در صورت عوض شدن قالب وردپرس، اطلاعات مربوط به پست سفارشی در سایت وردپرسی شما باقی بماند.

البته راهکارهای دیگری نیز برای این کار وجود دارد مانند استفاده از Must Use Plugin تا در هر صورت حتی با switch کردن بین تم ها، همچنان پست سفارشی شما در سایت وردپرسی شما قابل دسترس باشد. برای اطلاعات بیشتر می توانید به لینک مربوط به آن در پایین صفحه مراجعه کنید.

فرض کنید که تصمیم گرفته ایم یک پست سفارشی  برای ماشین آلات و در قالب وردپرس ایجاد کنیم. برای تعریف Custom Post Type با نام کتاب در قالب وردپرس، مراحل زیر را انجام می دهید:

  • ایجاد یک فایل با نام custom-post-type.php در دایرکتوری inc واقع در فولدر قالب وردپرس مورد نظر

  • فراخوانی این فایل در فایل functions.php با استفاده از دستور include

include get_template_directory() . '/inc/custom-post-type.php';
  • متصل نمودن تابع  msn_add_book_custom_post_type با استفاده از add_action به هوک init 

  • تعریف label های مورد استفاده برای رجیستر کردن  book_custom_post_type در داخل تابع  

  • تعریف آرگومان های لازم به صورت آرایه برای رجیستر کردن book_custom_post_type 

  • ثبت پست سفارشی با استفاده از تابع register_post_type

add_action( 'init', 'msn_add_book_custom_post_type' );
/**
 * Register a book post type.
 *
 * @link http://codex.wordpress.org/Function_Reference/register_post_type
 */
function msn_add_book_custom_post_type() {
  $labels = array(
    'name'               => _x( 'کتاب ها', 'msn-theme-textdomain' ),
    'singular_name'      => _x( 'کتاب', 'msn-theme-textdomain' ),
    'menu_name'          => _x( 'کتاب ها', 'msn-theme-textdomain' ),
    'name_admin_bar'     => _x( 'کتاب', 'msn-theme-textdomain' ),
    'add_new'            => _x( 'اضافه کردن جدید', 'msn-theme-textdomain' ),
    'add_new_item'       => __( 'اضافه کردن کتاب جدید', 'msn-theme-textdomain' ),
    'new_item'           => __( 'کتاب جدید', 'msn-theme-textdomain' ),
    'edit_item'          => __( 'ویرایش کتاب', 'msn-theme-textdomain' ),
    'view_item'          => __( 'نمایش کتاب', 'msn-theme-textdomain' ),
    'all_items'          => __( 'همه کتاب ها', 'msn-theme-textdomain' ),
    'search_items'       => __( 'جستجو کتاب ها', 'msn-theme-textdomain' ),
    'parent_item_colon'  => __( 'والد کتاب ها: ', 'msn-theme-textdomain' ),
    'not_found'          => __( 'هیچ کتابی یافت نشد', 'msn-theme-textdomain' ),
    'not_found_in_trash' => __( 'هیچ کتابی در سطل زباله یافت نشد.', 'msn-theme-textdomain' )
  );

  $args = array(
    'labels'             => $labels,
        'description'        => __( 'پست سفارشی کتاب در قالب', 'msn-theme-textdomain' ),
    'public'             => true,//if this option sets to false, this custom post type will be hidden in your menu
    	'publicly_queryable' => true,
    	'show_ui'            => true,
    	'show_in_menu'       => true,
    	'query_var'          => true,
    	'rewrite'            => array( 'slug' => 'book' ),
    	'capability_type'    => 'post',
        'menu_icon'          => 'dashicons-book',//022- add dashicon
    	'has_archive'        => true,
    	'hierarchical'       => true,
    	'menu_position'      => null,
        'taxonomies'        => array('post_tag','category'),
    	'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
  );

  register_post_type( 'book', $args );
}

چند نکته در فراخوانی register_post_type: برای دیدن لیست کلیه پارامتر های مورد استفاده در این تابع، می توانید از لینک های زیر استفاده نمایید. ذکر چند نکته در مورد پارامترهای این تابع، در این بخش، خالی از لطف نیست که به آن ها اشاره می گردد:

  • در ابتدای تابع msn_add_book_custom_post_type ، شما متغیر label را تعریف خواهید کرد که شامل آرایه ای از تمامی برچسب ها و نام های موجود استفاده شده، در پست سفارشی شما می باشد. شما می توانید از توابع ترجمه وردپرس استفاده کرده و آن ها را تعریف نمایید. ضمن اینکه می باید در انتهای هر بخش، text domain مورد نظر برای آن ها را هم ذکر کنید.

  • پس از تعریف label ها، شما متغیر args را تعریف می کنید که حاوی کلیه اطلاعات لازم برای ثبت کردن پست سفارشی شما می باشد. در واقع شما با این آرگومان ها، می توانید نحوه رفتار custom post type خود در سایت وردپرس را مدیریت نمایید.

  • پارامتر rewrite برای وردپرس بیان می نماید که چگونه می باید url های مربوط به این پست سفارشی شما را بازنویسی کند و به کاربر نمایش دهد.

  • پارامتر menu_icon برای آیکون پست سفارشی شما مورد استفاده قرار می گیرد که می توانید با استفاده از لیست dashicons موجود در سایت رسمی وردپرس، آن را به دلخواه خود، تغییر دهید.

  • پارامتر menu_position بیان می کند که پست سفارشی شما در کجای منوی سایت وردپرس ظاهر شود. شما می توانید از جایگاه های زیر به عنوان راهنما استفاده کنید

    • ۵ – below Posts
    • ۱۰ – below Media
    • ۱۵ – below Links
    • ۲۰ – below Pages
    • ۲۵ – below comments
    • ۶۰ – below first separator
    • ۶۵ – below Plugins
    • ۷۰ – below Users
    • ۷۵ – below Tools
    • ۸۰ – below Settings
    • ۱۰۰ – below second separator
  • پارامتر supports بیان می کند که چه امکاناتی برای این پست سفارشی فعال باشد. شما می توانید در آرایه فرستاده شده به این پارامتر، از مقادیر زیر استفاده کنید

    • ‘title’
    • ‘editor’
    • ‘author’
    • ‘thumbnail’
    • ‘excerpt’
    • ‘trackbacks’
    • ‘custom-fields’
    • ‘comments’
    • ‘revisions’
    • ‘page-attributes’
    • ‘post-formats’
  • پارامتر taxonomies بیان می کند که چه taxonomy هایی می تواند برای این پست سفارشی، مورد استفاده قرار گیرد

نکته مهم:

مطالب فوق از فیلم های آموزشی طراحی قالب وردپرس گروه آموزشی سون لرن، برداشت شده و با تغییراتی در آن، به عنوان چک لیست در اینجا قرار داده شده است.

هدف ما، مرتب سازی این مطالب و داشتن چک لیست برای انجام تکراری کارهایی است که به طور روزمره، برای پروژه های طراحی قالب وردپرس انجام می دهیم. برای دسترسی به فیلم این آموزش ها به صورت کامل، می توانید به سایت سون لرن مراجعه فرمایید.

راهنما برای چک لیست طراحی قالب وردپرس:

شما می توانید از لینک های زیر به عنوان مرجع های اصلی برای چک لیست طراحی قالب وردپرس در قسمت بالا استفاده نمایید:

راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:

شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید: