تعداد بازدید: 2679

تکسونومی ها (taxonomy) در وردپرس

در این مقاله قصد داریم تا دسته بندی ها و تگ ها یا به صورت کلی تر taxonomy ها رو در وردپرس بررسی کنیم و پارامتر های تابع register_taxonomy بررسی کنیم در نهایت یک اسنتپت برای افزودن تکسونومی داشته باشیم.

قبل از شروع کار باید بدونید که تکسونومی ها بدون پست تایپ ها استفاده خاصی ندارند و باید به یک پست تایپ خاص اضافه بشن . در تابع register_post_type هم پارامتری برای این کار داشتیم که تکسونومی ها رو اضافه می کرد به پست تایپ ها.

تکسونومی ها (taxonomy) در وردپرس

خوب یه سری برگه رو در نظر بگیرید . یه سری پوشه هم وجود داره . یه تعداد از برگه ها در پوشه خاص قرار می گیرند. لفظ پوشه حکم تکسونومی رو داره . هر یک از اون پوشه ها یک term هست . پس ما term ها رو داریم و taxonomy ها .هر term یه id داره و یه taxonomy که با اون ها قابل شناساییه. به طور مثال دسته ها یک تکسونومی هست و دسته بندی اخبار یک term هست.

taxonomy های پیش فرض وردپرس

  • category که همون دسته بندی های نوشته ها است.
  • post_tag که همون برچسب نوشته هاست.
  • link_category برای دسته بندی لینک ها جهت نمایش در ساید بار هست.
  • post_format خوب جالبه که بدونید پست فرمت ها هم یه نوع taxonomy هستند.

نکته : در پلاگین نویسی سعی کنید تا حد امکان از امکانات پیش فرض وردپرس استفاده کنید. این موضوع می طلبه که شما به امکانات وردپرس آشنایی کامل داشته باشید.

نکته : taxonomy ها از نظر ساختاری تفاوت هایی با پست تایپ ها داره که مهم ترین اون ها اینه که برای تکسونومی ها نمیشه comment تعریف کرد.

معرفی تابع register_taxonomy

این تابع از دو پارامتر الزامی و یک پارامتر اختیاری ساخته شده.

<?php register_taxonomy( $taxonomy, $object_type, $args ); ?>

$taxonomy : نام taxonomy مورد نظر که به وسیله اون query می گیریم و اون رو در لینک ها مشاهده می کنیم.
$object_type لیست پست تایپ هایی که قراره از این taxonomy در اون ها استفاده بشه .
$args آرگومان های لازم جهت شخصی سازی taxonomy

نحوه استفاده از تابع  register_taxonomy

برای ساخت custom taxonomy باید از یک تابع که به init وردپرس قلاب شده استفاده کنیم.

<?php 
// Register Custom Taxonomy
function custom_taxonomy() {

	$labels = array(
		'name'                       => _x( 'Taxonomies', 'Taxonomy General Name', 'text_domain' ),
		'singular_name'              => _x( 'Taxonomy', 'Taxonomy Singular Name', 'text_domain' ),
		'menu_name'                  => __( 'Taxonomy', 'text_domain' ),
		'all_items'                  => __( 'All Items', 'text_domain' ),
		'parent_item'                => __( 'Parent Item', 'text_domain' ),
		'parent_item_colon'          => __( 'Parent Item:', 'text_domain' ),
		'new_item_name'              => __( 'New Item Name', 'text_domain' ),
		'add_new_item'               => __( 'Add New Item', 'text_domain' ),
		'edit_item'                  => __( 'Edit Item', 'text_domain' ),
		'update_item'                => __( 'Update Item', 'text_domain' ),
		'view_item'                  => __( 'View Item', 'text_domain' ),
		'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ),
		'add_or_remove_items'        => __( 'Add or remove items', 'text_domain' ),
		'choose_from_most_used'      => __( 'Choose from the most used', 'text_domain' ),
		'popular_items'              => __( 'Popular Items', 'text_domain' ),
		'search_items'               => __( 'Search Items', 'text_domain' ),
		'not_found'                  => __( 'Not Found', 'text_domain' ),
		'no_terms'                   => __( 'No items', 'text_domain' ),
		'items_list'                 => __( 'Items list', 'text_domain' ),
		'items_list_navigation'      => __( 'Items list navigation', 'text_domain' ),
	);
	$args = array(
		'labels'                     => $labels,
		'public'  			         => true,
		'publicly_queryable'         => true,
		'hierarchical'               => true,
		'show_ui'                    => true,
		'show_in_menu'		         => true,	
		'show_in_nav_menus'	         => true,	
		'show_tagcloud'		         => true,	
		'show_in_quick_edit'         => true,
		'show_admin_column'          => true,
		'capabilities'		         => array(
			'manage_terms'  	=> 'manage_categories',	
			'edit_terms'  		=> 'manage_categories',	
			'delete_terms'  	=> 'manage_categories',	
			'assign_terms'  	=> 'edit_posts',	
		),
		'rewrite'           => array( 'slug' => 'taxonomy-slug' ),
	);
	register_taxonomy( 'taxonomy', array(), $args );

}
add_action( 'init', 'custom_taxonomy', 0 );

آرگومان های تابع register_taxonomy

  • labels : برچسب هایی که مربوط به taxonomy میشه و ما اون ها رو در پنل ادمین می بینیم.
  • public : این پارامتر برای عمومی کردن این taxonomy در پنل ادمین هست. چه در پنل ادمین چه در فرانت از طریق url. مثلا تکسونومی post_format با public : false ارائه شده.
    نکته : پارامتر های زیادی از این پارامتر مشتق میشن که در صورت اینکه شما اون ها رو set نکنین از پارامتر public مقدارشون رو میگیرن:
    publicly_queryable و show_ui و show_in_nav_menus پارامتر هایی هستند که از پارامتر public ارث می برن.
  • publicly_queryable : کوئری عمومی از طریق url می شود publicly_queryable که منظور این است که فردی بتواند از طریق url کوئری بزند برای دسترسی به تکسونومی شما یا خیر.
  • heirarchical : امکان وجود حالت ارث بری برای تکسونومی های شما . یعنی حالت پدر و فرزندی یا انتخاب parent برای term ها.
  • show_ui : نمایش در منوی پنل ادمین (منوی سمت راست در پنل ادمین یا admin menu ) و همچنین در صفحات داخلی پست تایپ ها برای انتخاب تکسونومی برای پست تایپ خاص . نکته مهم اینه که show_ui یک مورد کلی تر از show_in_menu هست.
  • show_in_menu : این مورد تنها تکسونومی شما رو از منوی پنل ادمین وردپرس حذف می کنه .
    نکته : این پارامتر در صورتی کار می کنه که show_ui رو برابر true قرار داده باشید . اگر show_ui برابر false باشه دیگه true یا false بودن این پارامتر مهم نیست.
  • show_in_nav_menus : این که در قسمت جعبه های فهرست ها باشه تا بتونید به منو اضافه کنید یا خیر. این مورد مربوط به فهرست ها میشه.
  • show_tagcloud : این که در رده های ابزارک ابر چسب نمایش داده بشه یا خیر . ما ابزارکی داریم به نام ابر چسب که میتونه taxonomy های ما رو نمایش بده .
  • show_in_quick_edit : در قسمت ویرایش سریع هر پست این امکان وجود داشته باشه تا taxonomy نمایش داده بشه یا خیر.
    نکته : اگر نیاز زیادی به این امکان ندارید این مورد رو false کنید تا پست ها در پنل ادمینتون سریعتر لود بشه.
  • show_in_admin_column : آیا در قسمت لیست پست ها در پنل ادمین ستونی وجود داشته باشه که taxonomy ها رو نمایش بده یا خیر.
    نکته : اگر نیاز زیادی به این امکان ندارید این مورد رو false کنید تا پست ها در پنل ادمینتون سریعتر لود بشه.
  • capabilities : به طور کلی ما در وردپرس می تونیم سطح دسترسی (capability) برای نقش های مختلف (role) رو تعیین کنیم. به طور مثال ما نقشی داریم با نام subscriber یا سطح دسترسی ای داریم به نام edit_posts که هر سطح دسترسی برای هر  نقش می تونه فعال یا غیر فعال باشه . برای پست ها ما نقش های مشابهی داریم که میشه اون ها رو تغییر داد به طوری سطح دسترسی خاص برای نقش فعال نشه . به طور مثال ما وقتی taxonomy خاصی داریم می تونیم برای ویرایش ، حذف ، اضافه و مدیریت اون taxonomy سطح دسترسی جدیدی تعیین کنیم که بعد ها اون رو برای نقش های مورد نظرمون فعال کنیم.
    دسترسی های زیر قابل تعیین هستند برای taxonomy ها
    manage_terms برای این که بتونید مدیریت کنید term های خودتون رو . اگر این سطح دسترسی رو نداشته باشید کلن منو برای شما نمایش داده نمیشه
    edit_terms اگر کاربری نقشش سطح دسترسی رو نداشته ویرایش از قسمت نمایش term ها حذف میشه و دیگه این امکان براش وجود نداره.
    delete_terms اگر کاربری نقشش سطح دسترسی رو نداشته حذف از قسمت نمایش term ها مخفی میشه و دیگه این امکان براش وجود نداره که بتونه term رو حذف کنه.
    assign_terms این که بتونه کاربری بتونه یک term رو به یک پست نسبت بده . مثلا انتخاب یک دسته بندی برای یک نوشته.
    نکته :‌ یه سری سطح دسترسی های پیش فرض برای نقش های پیش فرض وجود داره که می تونید اون ها رو در مستندات وردپرس پیدا کنید.
  • rewrite : اون قسمتی که در لینک (url) که از taxonomy دیده میشه به صورت پیش فرض از $taxonomy گرفته میشه که به وسیله این پارامتر شما می تونید این مورد رو تغییر بدید.

این ها پارامتر های کلی برای ایجاد یک taxonomy برای یک پست تایپ خاص هست . ما در زمان ایجاد یک پست تایپ میتونیم با پارامتر taxonomies یک یا چند taxonomy رو براش set بکنیم.

مطالب مشابه

Product Type در ووکامرس

در ووکامرس مفهومی با هویت Taxonomy با نام product_type داریم که term های متفاوتی را دارا می باشد به طور مثال simple ,...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

پایگاه داده وردپرس

در این مقاله قصد داریم تا پایگاه داده وردپرس ۴.۴ رو بررسی کنیم. پایگاه داده این نسخه از وردپرس تا mysql نسخه 5.0.15 و...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای تکسونومی ها (taxonomy) در وردپرس

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *