آموزش وردپرس ، ساخت یک post type دلخواه

%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%88%d8%b1%d8%af%d9%be%d8%b1%d8%b3-%d8%8c-%d8%b3%d8%a7%d8%ae%d8%aa-%db%8c%da%a9-post-type-%d8%af%d9%84%d8%ae%d9%88%d8%a7%d9%87-wpmen

یکی از خصیصه های بسیار مفید و جدید وردپرس +۳، توانایی اضافه کردن نوع نوشته اختصاصی (post type ) می باشد. این ویژگی شما را قادر می سازد تا غیر از پنج نوع نوشته پیشفرض در وردپرس (مثل نوشته، برگه، پیوست نوشته و غیره)،  انواع مختلف نوشته را طبقه بندی کنید و به نمایش بگذارید. نوع پستی (Post Types)  انواع مختلف محتوا در وردپرس می باشد. در واقع post type ها  وردپرس را از یک سیستم وبلاگدهی به یک سیستم مدیریت محتوای قوی تبدیل می کند . Post Types  در وردپرس کار خاصی انجام می دهند . برای مثال برگه ها نوعی از پست تایپ های وردپرس می باشند که با نام page شناخته می شوند و صفحاتی مانند درباره ما،ارتباط با ما و… را می توان به وسیله آن ایجاد کرد.

پست تایپ های پیشفرض وردپرس عبارتند از:

  • Post (Post Type: 'post')
  • Page (Post Type: 'page')
  • Attachment (Post Type: 'attachment')
  • Revision (Post Type: 'revision')
  • Navigation menu (Post Type: 'nav_menu_item')

 

customposttypes

طراحان قالب و توسعه دهندگان وردپرس می توانند نوع پست های سفارشی را با استفاده از یکی از افزونه های متعدد موجود یا توسط تابع register_post_type به وردپرس اضافه کنند.برای ساخت یک Post Type باید اکشن آن را در functions.php قرار داد.در زیر آموزش هایی قرار دادیم تا کامل ترین نوع پست تایپ ها را به نیازتان در سایت قرار دهید.

 


کد زیر را در functions.php وارد نمایید.

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'wpmen_product',
    array(
      'labels' => array(
        'name' => __( 'Products' ),
        'singular_name' => __( 'Product' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}

شما نوع نوشته wpmen_product را ساختید .اگر بخواهید به صورت حرفه ای تر باشد کد زیر را در functions.php بگذارید.با این کار می توانید تصویر هم برای نوع نوشته خود قرار دهید

add_action('init', 'tie_slider_register');
 
function tie_slider_register() {
 
	$labels = array(
		'name' => 'sliders',
		'singular_name' => 'slider',
		'add_new_item' => 'add slider',
	);
 
	$args = array(
		'labels' => $labels,
		'public' => false,
		'show_ui' => true,
		'menu_icon' => get_template_directory_uri().'/img/slideshow.png',
		'can_export' => true,
		'exclude_from_search' => true,
		'capability_type' => 'post',
		'hierarchical' => false,
		'menu_position' => 6,
		'rewrite' => array('slug' => 'slider'),
		'supports' => array('title')
	  ); 
 	   
	register_post_type( 'tie_slider' , $args );
}

 نمونه ای کامل تر

add_action('init', 'review_register');

function review_register() {

    $labels = array(
        'name' => _x('Reviews', 'post type general name'),
        'singular_name' => _x('Review', 'post type singular name'),
        'add_new' => _x('Add New', 'review'),
        'add_new_item' => __('Add New Review'),
        'edit_item' => __('Edit Review'),
        'new_item' => __('New Review'),
        'view_item' => __('View Review'),
        'search_items' => __('Search Review'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => ''
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'menu_icon' => null,
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','thumbnail')
    );

    register_post_type( 'review' , $args );
}

// Custom Taxonomy

function add_console_taxonomies() {

    register_taxonomy('console', 'review', array(
        // Hierarchical taxonomy (like categories)
        'hierarchical' => true,
        // This array of options controls the labels displayed in the WordPress Admin UI
        'labels' => array(
            'name' => _x( 'Review Category', 'taxonomy general name' ),
            'singular_name' => _x( 'Review-Category', 'taxonomy singular name' ),
            'search_items' =>  __( 'Search Review-Categories' ),
            'all_items' => __( 'All Review-Categories' ),
            'parent_item' => __( 'Parent Review-Category' ),
            'parent_item_colon' => __( 'Parent Review-Category:' ),
            'edit_item' => __( 'Edit Review-Category' ),
            'update_item' => __( 'Update Review-Category' ),
            'add_new_item' => __( 'Add New Review-Category' ),
            'new_item_name' => __( 'New Review-Category Name' ),
            'menu_name' => __( 'Review Categories' ),
        ),

        // Control the slugs used for this taxonomy
        'rewrite' => array(
            'slug' => 'console', // This controls the base slug that will display before each term
            'with_front' => false, // Don't display the category base before "/locations/"
            'hierarchical' => true // This will allow URL's like "/locations/boston/cambridge/"
        ),
    ));
}
add_action( 'init', 'add_console_taxonomies', 0 );

مثالی دیگر با توضیحات کامل 

function wpmen_custom_post_type() {

    $labels = array(
        'name'                => __( 'Post Types', 'text_domain' ),
        'singular_name'       => __( 'Post Type', 'text_domain' ),
        'menu_name'           => __( 'Post Type', 'text_domain' ),
        'parent_item_colon'   => __( 'Parent Item:', 'text_domain' ),
        'all_items'           => __( 'All Items', 'text_domain' ),
        'view_item'           => __( 'View Item', 'text_domain' ),
        'add_new_item'        => __( 'Add New Item', 'text_domain' ),
        'add_new'             => __( 'Add New', 'text_domain' ),
        'edit_item'           => __( 'Edit Item', 'text_domain' ),
        'update_item'         => __( 'Update Item', 'text_domain' ),
        'search_items'        => __( 'Search Item', 'text_domain' ),
        'not_found'           => __( 'Not found', 'text_domain' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
    );
    $rewrite = array(
        'slug'                => 'post_type',
        'with_front'          => true,
        'pages'               => true,
        'feeds'               => true,
    );
    $capabilities = array(
        'edit_post'           => 'edit_post',
        'read_post'           => 'read_post',
        'delete_post'         => 'delete_post',
        'edit_posts'          => 'edit_posts',
        'edit_others_posts'   => 'edit_others_posts',
        'publish_posts'       => 'publish_posts',
        'read_private_posts'  => 'read_private_posts',
    );
    $args = array(
        'label'               => __( 'post_type', 'text_domain' ),
        'description'         => __( 'Post Type Description', 'text_domain' ),
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks', 'revisions', 'custom-fields', 'page-attributes', 'post-formats', ),
        'taxonomies'          => array( 'category', 'post_tag' ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'menu_icon'           => 'dashicons-welcome-learn-more',
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'query_var'           => 'post_type',
        'rewrite'             => $rewrite,
        'capabilities'        => $capabilities,
    );
    register_post_type( 'post_type', $args );

}

add_action( 'init', 'wpmen_custom_post_type', 0 );

 

تابع register_post_type دارای دو پارامتر می باشد ؛ پارامتر اول نام نوع پست سفارشی و پارامتر دوم آرایه‌ای از خصوصیت‌هایی است که برای این Post Type تعریف می کنیم.در زیر پارامتر دوم را مورد بررسی قرار می دهیم :

  • label : نام نمایش پست سفارشی
  • description : توضیح درباره نوع پست سفارشی
  • labels : آرایه‌ای از عنوان های استفاده شده در صفحات مربوط به نوع پست سفارشی، شامل:
    • name : عنوان نوع پست سفارشی
    • singular_name : عنوان برای تک پست
    • menu_name : عنوان در منوی مدیریت
    • parent_item_colon : عنوان برای استفاده در حالتی که نوع پست سفارشی قابلیت سلسله‌ای را داشته باشد
    • all_items : عنوان تمام آیتم ها
    • view_item : نمایش آیتم/پست
    • add_new_item : افزودن آیتم جدید
    • add_new : افزودن پست جدید
    • edit_item : ویرایش
    • update_item : بروزرسانی
    • search_items : جستجو
    • not_found : عنوان در صورت پیدا نشدن پست در صفحه مدیریت پست سفارشی
    • not_found_in_trash : پیدا نشدن پست در بخش بازیافت
  • supports : لیست آرایه‌ای از امکاناتی که پیشفرض وردپرس داراست و میتوانید استفاده کنید، شامل:
    • title : امکان تعیین عناون برای نوع پست سفارشی
    • editor : ویرایشگر متن
    • excerpt : خلاصه متن
    • author : تعیین نویسنده
    • thumbnail : پشتیبانی از تصویر شاخص 
    • comments : قابلیت ارسال نظر برای نوع سفارشی
    • trackbacks : بازخورد
    • revisions : مطالب بازبینی شده
    • custom-fields : زمینه دلخواه
    • page-attributes : تعیین صفت برا پست
    • post-formats : انواع فرمتهای پست مانند : صدا، ویدیو، نقل قول و …
  • taxonomies : در صورتی که taxonomy جدیدی ثبت شده یا میخواهید از نوع‌های پیشفرض مانند category و post_tag استفاده کنید در این پارامتر نام taxonomy  را به صورت آرایه قرار دهید.
  • hierarchical : پشتیبانی از حالت سلسله‌ای برای پست ها (نوع برگه دارای چنین خصوصیتی هست)
  • public : وضعیت نمایش برای نویسنده‌ ها (show_in_nav_menus, show_ui)  و خواننده ها  (exclude_from_searchpublicly_queryable). مقدار پیشفرض برابر false است
  • show_ui : وضعیت نمایش در مدیریت
  • show_in_menu : کنترل نمایش در منوی مدیریت
  • show_in_nav_menus : امکان استفاده/نمایش  در فهرست ها
  • show_in_admin_bar : نمایش در منوی ابزار مدیریت
  • menu_position : موقعیت نمایش منو در منوی مدیریت، میتوان مقداری را با توجه موقعیت های زیر قرار داد (در صورت تعیین نشدن در انتهای منوی مدیریت نمایش داده می‌شود):
    • ۵ – زیر منوی نوشته‌ها
    • ۱۰ – زیر منوی رسانه
    • ۱۵ – زیر منوی لینکها
    • ۲۰ – زیر منوی برگه‌ها
    • ۲۵ – زیر منوی دیدگاه‌ها
    • ۶۰ – زیر منوی نمایش
    • ۶۵ – زیر منوی افزونه‌ها
    • ۷۰ – زیر منوی کاربران
    • ۷۵ – زیر منوی ابزارها
    • ۸۰ – زیر منوی تنظیمات
    • ۱۰۰ – زیر دومین جدا کننده منو
  • menu_icon : نام آیکن منو، برای تعیین میتوان از dashicons استفاده کرد
  • can_export : امکان برون‌بری و درون‌ریزی
  • has_archive : تعیین قابلیت بایگانی برای پست سفارشی
  • exclude_from_search : وضعیت نادیده گرفتن در جستجو
  • publicly_queryable : امکان query و نمایش پست سفارشی، در صورتی که مقدار false تنظیم  شود بایگانی پست سفارشی نمایش داده نمیشود.
  • query_var : مقداری که در query  پیشفرض وردپرس تنظیم میشود برای query  گرفتن از نوع پست سفارشی
  • rewrite : در صورتی که قرار باشد  نامک نوع پست سفارشی را تغییر داد میتوان از این امکان استفاده کرد در غیر این صورت برابر با نامی هست که برای نوع پست تعیین می شود. به صورت آرایه‌ای تعیین میشود (اختیاری)
    • slug : تعیین نامک نوع پست سفارشی
    • with_front : تعیین استفاده در آدرس‌دهی پست ها
    • pages : تعیین استفاده در صفحه‌بندی
    • feeds : تعیین استفاده در فید/خوراک
  • capability_type : میتوان از  قابلیت های پیشفرض نوع post و page برای نویسنده نوع پست سفارشی جدید استفاده کرده و  یا با استفاده از پارامتر capabilities برای هر قابلیت وضعیتی تعیین کرد. مقدارهای قابل تعیین برای این پارامتر : page یا post
  • capabilities : لیست آرایه‌ای تعیین قابلیتهای نویسنده/کاربر برای تغییر در نوع پست سفارشی
    • edit_post : قابلیت نویسنده برای ویرایش پست، مقدار پیشفرض edit_post
    • read_post : قابلیت نویسنده برای خواندن پست، مقدار پیشفرض read_post
    • delete_post : قابلیت نویسنده برای حذف پست، مقدار پیشفرض delete_post
    • edit_posts : قابلیت نویسنده برای ویرایش پستها، مقدار پیشفرض edit_posts
    • edit_others_posts : قابلیت نویسنده برای ویرایش پستهای دیگر نویسنده‌ها، مقدار پیشفرض edit_others_posts
    • publish_posts : قابلیت نویسنده برای انتشار پست، مقدار پیشفرض publish_posts
    • read_private_posts : قابلیت نویسنده برای خواندن پستهای خصوصی، مقدار پیشفرض read_private_posts

منبع کمکی

منبع :‌ مردان وردپرس

تاریخ آخرین بروزرسانی : ۲۱ آبان ۱۳۹۵
میلاد میلادی

باور هایت را که پرورش دهی به هرچیزی دست خواهی یافت.

ارسال نظر

آدرس الکترونیکی شما نمایش داده نمی شود *

Time limit is exhausted. Please reload CAPTCHA.