قسمت ۱ – ایجاد تکسانومی / Taxonomy در وردپرس

تهران آی تی / برنامــه نویــسـی / وردپرس / قسمت ۱ – ایجاد تکسانومی / Taxonomy در وردپرس
ایجاد تکسانومی / Taxonomy در وردپرس

ایجاد تکسانومی / Taxonomy در وردپرس

تکسانومی / Taxonomy چیست : در ادمین وردپرس بخش نوشته ها ما ۲ گزینه دسته ها و برچسب ها را داریم به این دو اصطلاحا تکسانومی ها / Taxonomies گفته میشود که وظیفه آن طبقه بندی و دسته بندی یک پست تایپ خاص هست حال میتواند پست تایپ پیش فرض وردپرس با نام نوشته ها باشد یا پست تایپی که خودمان به صورت سفارشی اضافه کرده ایم باشد. در صورتی که با پست تایپ ها آشنایی ندارید اینجا کلیک کنید.

در وردپرس در صورتی که می خواهید پست های خود را بر اساس روش هایی علاوه بر دسته بندی و برچسب های پیش فرض خود وردپرس دسته بندی و بعدا فیلتر کنید می توانید یک custom taxonomy ایجاد کنید و پست ها را بر آن اساس دسته بندی کنید. دو مدل تکسانومی داریم که شامل موارد زیر است.

  • تکسانومی سلسله مراتبی : همان دسته ها هستند – میتوانند والد داشته باشند.
  • تکسانومی غیر سلسله مراتبی : همان برچسب ها هستند – نمیتوانند والد داشته باشند.

نحوه ایجاد تکسانومی

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

در کد های خود فقط از حروف کوچک استفاده کنید تا به مشکل نخورید.

کد های تکسانومی : قطعه کد زیر کل کد های مورد نیاز جهت رجیستر تکسانومی های مدل سلسله مراتبی-دسته و غیر سلسله مراتبی-برچسب میباشد. که در ادامه توضیحات کامل آن را میآورم.

add_action( 'init', 'tin_register_taxonomies', 0 );
function tin_register_taxonomies() {
// Add new categories taxonomy
$labels = array(
'name' => 'نوع محصولات',
'singular_name' => 'نوع محصول',
'menu_name' => 'نوع محصول',
'all_items' => 'همه انواع محصول',
'edit_item' => 'ویرایش نوع محصول',
'view_item' => 'مشاهده نوع محصول',
'update_item' => 'بروزرسانی نوع محصول',
'add_new_item' => 'افزودن نوع محصول جدید',
'new_item_name' => 'عنوان نوع محصول',
'parent_item' => 'مادر',
'parent_item_colon' => 'مادر:',
'search_items' => 'جستجو',
);
$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' => 'product-type' ),
);
register_taxonomy( 'tin_product_type', array( 'tin_pt_product' ), $args );
// Add new tag taxonomy
$labels = array(
'name' => 'رنگ ها',
'singular_name' => 'رنگ',
'menu_name' => 'رنگ ها',
'all_items' => 'همه رنگ ها',
'edit_item' => 'ویرایش رنگ',
'view_item' => 'مشاهده رنگ',
'update_item' => 'بروزرسانی رنگ',
'add_new_item' => 'افزودن رنگ جدید',
'new_item_name' => 'عنوان رنگ جدید',
'parent_item' => null,
'parent_item_colon' => null,
'search_items' => 'جستجوی رنگ',
'popular_items' => 'رنگ های محبوب',
'separate_items_with_commas' => 'رنگ ها را با ویرگول جدا کنید.',
'add_or_remove_items' => 'افزودن یا حذف رنگ ها',
'choose_from_most_used' => 'انتخاب از رنگهای بیشتر استفاده شده.',
'not_found' => 'هیچ رنگی پیدا نشد',
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'public' => true,
'rewrite' => array( 'slug' => 'product-color' ),
);
register_taxonomy( 'tin_product_color', 'tin_pt_product', $args );
}

هوک ایجاد تکسانومی : توسط این هوک که به init قلاب می اندازد، یک فانکشن جهت رجیستر تکسانومی وارد میکنیم. این هوک ۳ ورودی میگیرد که شامل موارد زیر است :

  • محلی که باید قلاب انداخته شود init
  • نام فانکشنی که باید اجرا شود در این مثال tin_register_taxonomies
  • اولویت اجرای هوک در این مثال عدد صفر

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

تابع رجیستر کردن تکسانومی ها : توسط کد زیر ما ۲ تکسانومی سلسله مراتبی-دسته و غیر سلسله مراتبی-برچسب خود را رجیستر میکنیم. و ۳ ورودی میگیرند که شامل موارد زیر است :

  • نام فانکشنی که باید کد های آن را اجرا کنند. در این مثال از tin_product_type برای دسته ها و از  tin_product_color برای برچسب ها استفاده شده.
  • آرایه ای از نام پست تایپ هایی را میگیرد که قرار است تکسانومی ما به آن متصل شود میتواند یکی یا چند تا باشد که با ، از هم جدا میشوند. در این مثال نام پست تایپی که ما قبلا رجیستر کردیم tin_pt_product میباشد.
  • آرایه ای از تنظیمات و کانفیگ تکسانومی میگیرد مثلا لیبل های آن و یا وضعیت نمایش و ….

register_taxonomy( 'tin_product_type', array( 'tin_pt_product' ), $args );
register_taxonomy( 'tin_product_color', array( 'tin_pt_product' ), $args );

آرایه تنظیمات و کانفیگ تکسانومی

public : اگر مقدار آن true باشد ما در سمت فرانت به آن دسترسی خواهیم داشت. و اگر مقدار آن false باشد ما فقط از طریق کد نویسی به آن دسترسی خواهیم داشت.

اگر مقدار public برابر با true باشد موارد زیر به صورت پیش فرض مقادیر زیر را میگیرند. البته میتوان آن ها را تغییر داد.

'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,

publicly_queryable : قابلیت کوئری زدن را فعال و غیر فعال میکند، مثلا ما در دسته ها می توانیم لینک محتوا های مربوط به یک دسته یا برچسب را از طریق مرورگر و url مشاهده کنیم. اگر مقدار آن false باشد همه این لینک ها و کوئری ها از بین میرود و اگر true باشد میتوانیم به آن ها دسترسی داشته باشیم.

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

hierarchical : تنها تفاوت تکسانومی های مدل سلسله مراتبی یا همان دسته ها و غیر سلسله مراتبی یا همان برچسب ها در این بخش مشخص میشود اگر true باشد بخش سلسله مراتبی برای آن ایجاد میشود یعنی دارای والد یا همان مادر میشود و اگر false باشد مانند tag ها عمل میکند بدون والد.

تفاوت برچسب ها و تگ ها توسط قابلیت hierarchical مشخص میشود که true باشد یا false .

show_ui : اگر مقدار آن false باشد دیگر در پنل ادمین نمایش داده نمیشود حتی در منو داشبورد مثلا زمانی که بخواهیم خودمان یک رابط کاربری اختصاصی برای تکسانومی تولید و طراحی کنیم کاربرد دارد. و اگر مقدار برابر true باشد دقیقا عکس عمل میکند.

show_in_menu : اگر false باشد دیگر در منوی پنل ادمین نمایش داده نمیشود و فرق آن با publicly_queryable در این است که در show_in_menu فقط منو حذف شده و از طریق url میشود به آن دسترسی داشت اما در publicly_queryable از طریق url هم نمیشود به آن دسترسی داشت. و اگر مقدار برابر true باشد دقیقا عکس عمل میکند.

show_in_nav_menus : اگر مقدار آن false باشد دیگر نمیتوان از بخش منو ها-فهرست ها آن را به فهرست یا منو ای اضافه کرد. و اگر مقدار برابر true باشد دقیقا عکس عمل میکند اگر در بخش منو ها نیامد باید آن را از بخش تنظیمات صفحه اضافه کنید.

show_tagcloud : اگر برابر با false باشد در بخش ویجت ها آن را حذف میکند و نمیگزارد که آن را مثلا به ویجت ابر برچسب اضافه کنیم. و اگر true باشد برعکس عمل میکند.

show_in_quick_edit : اگر true باشد در بخش ویرایش سریع پست تایپ، زمانی که کلیک میکنیم تکسانومی ما نیز در آن بخش نمایش داده شود و اگر false باشد نمایش داده نشود.

show_admin_column : اگر true باشد در بخشی که همه پست تایپ ها در پنل ادمین نمایش داده میشود، ستونی هم برای تکسانومی ما در نظر میگیرد و اگر false باشد نمایش داده نشود.

wp show admin column

capabilities : برای تعیین سطح دسترسی استفاده میشود مثلا فقط ادمین قابلیت حذف یک کتگوری را داشته باشد. یک آرایه میگیرد ما برخی از قابلیت های آن را برای شما آورده ایم که به شرح ذیل است :

  • قابلیت manage_terms : به هر گزینه ای که به تکسانومی های خود اضافه کنیم یک ترم گفته میشود. مثلا ما تکسانومی نوع محصولات را داریم و یک گزینه تلوزیون اضافه کردیم خود تلوزیون یک ترم میباشد. manage_terms سطح دسترسی برای مدیریت کلی ترم ها را مشخص میکند که در مثال بالا ما سطح manage_categories را دادیم. برای مشاهده تمام سطح دسترسی های پیش فرض وردپرس مثل manage_categories یا  edit_posts و … از لینک زیر میتوانید مستندات آن را مشاهده کنید.

https://wordpress.org/support/article/roles-and-capabilities/

  • قابلیت edit_terms : سطح دسترسی برای ویرایش ترم ها را مشخص میکند.
  • قابلیت delete_terms : سطح دسترسی برای حذف ترم ها را مشخص میکند.
  • قابلیت assign_terms : سطح دسترسی برای اقزودن یک دسته به یک محصول یا نسبت دادن یک دسته به یک پست را مشخص میکند.

rewrite : توسط این بخش میتوانیم نامک کلی تکسانومی خود در url را تغییر دهیم. یک آرایه میگیرد و کافی است مقدار slug را در آن مقدار دهی کنیم.

توجه داشته باشید که در تکسانومی ها نیز مثل پست تایپ ها باید پیوند های یکتا را فلاش کنیم.

خصوصی سازی صفحات تکسانومی

فرقی نمیکند که برای تکسانومی سلسله مراتبی یا تکسانومی غیر سلسله مراتبی بخواهیم یک صفحه اختصاصی بسازیم ۳ راه برای این کار وجود دارد.

  • روش اول : ساخت صفحه اختصاصی برای همه تکسانومی ها مثل صفحه آرشیو که همه کتگوری ها را نمایش میدهد. برای این کار کافی است یک فایل php در پوشه قالب خود با نام تکسانومی بسازیم. معادل همان صفحه archive.php میباشد.

taxonomy.php

  • روش دوم : ساخت صفحه اختصاصی برای یک تکسانومی خاص، که همه کتگوری های موجود در آن تکسانومی خاص را به صورت اختصاصی نمایش میدهد. برای این کار کافی است یک فایل php در پوشه قالب خود با نام تکسانومی – نام تکسانومی مورد نظر بسازیم.

taxonomy-taxonomy name.php

  • روش سوم: ساخت صفحه اختصاصی برای یک کتگوری خاص از یک تکسانومی خاص، مثلا ما تکسانومی نوع محصولات ایجاد کردیم یک ترم یا دسته آن تلوزیون است ما میخواهیم فقط برای دسته تلوزیون صفحه اختصاصی بسازیم. برای این کار کافی است یک فایل php در پوشه قالب خود با نام تکسانومی – نام تکسانومی مورد نظر – نام اسلاگ مد نظر بسازیم. توجه داشته باشید که اسلاگ همان نامک تکسانومی است و حتما باید به زبان انگلیسی باشد.

taxonomy-taxonomy name-slug name.php

توجه : میتوانید برای حلقه ها و کوئری ها از همان کد های صفحه آرشیو استفاده کنید.

جستجو کنید

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

دوره رایگان بنفش ASP.NET MVC

کامل ترین و بهترین دوره رایگان Asp.Net MVC 5 شامل 44 قسمت - ASP.NET یک فریمورک وب رایگان برای ساخت وب سایت ها و برنامه های کاربردی وب بر روی دات نت فریم ورک با استفاده از HTML ، CSS و جاوا اسکریپت است. از این رو تیم تحقیقاتی تهران آی تی به این نتیجه رسید که دوره رایگان و کاربردی در خصوص ASP.NET MVC 5 منتشر کند. این دوره آموزشی رایگان با عشق و علاقه برای شما پژوهندگان علم تولید شده است.

ورود به دوره رایگان بنفش ASP.NET MVC

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد