در وردپرس قابلیتهایی برای دستهبندی مطالب وجود دارد که دسته و برچسب نوشتهها نمونهای از آن هستند، حال اگر بخواهیم این دستهبندی را با تنوع و تفکیکپذیری بیشتری اعمال کنیم نیاز به قابلیتی داریم که در وردپرس با نام Taxonomy شناخته میشود و امکان ایجاد و سفارشیسازی خوبی دارد.
از Taxonomyها فقط برای نوع پست سفارشی استفاده نمیشود و شما میتوانید برای نوشتههای پیشفرض یا در توسعه افزونههای خود برای بخش مدیریت آیتمهای خود از آن استفاده کنید، نمونه طبقهبندی برای سال انتشار فیلمها در سایت.
روش ساده ایجاد طبقهبندی
افزونههایی مانند Simple Taxonomy، Custom Taxonomy Creator، GD Custom Posts And Taxonomies Tools و سایتهایی مانند GenerateWP راهنمای خوبی برای ساخت Taxonomy هستند.
روش دستی ایجاد طبقهبندی
برای افزودن دستی طبقهبندی جدید کدها را میتوانید در افزونه یا فایل functions.php پوسته استفاده کنید.
برای شروع میخواهیم کد زیر را بررسی کنیم:
// Register Custom Taxonomy function wpp_custom_taxonomy() { $labels = array( 'name' => __( 'Taxonomies', 'text_domain' ), 'singular_name' => __( 'Taxonomy', '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' ), 'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ), 'search_items' => __( 'Search Items', 'text_domain' ), 'add_or_remove_items' => __( 'Add or remove items', 'text_domain' ), 'choose_from_most_used' => __( 'Choose from the most used items', 'text_domain' ), 'not_found' => __( 'Not Found', 'text_domain' ), ); $args = array( 'labels' => $labels, 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true, ); register_taxonomy( 'taxonomy', array( 'post' ), $args ); } // Hook into the 'init' action add_action( 'init', 'wpp_custom_taxonomy', 0 );
در کد بالا تابع wpp_custom_taxonomy را به اکشن init برای طبقهبندی جدید در ابتدای شروع برنامه نسبت دادهایم. تابع register_taxonomy که برای ثبت طبقهبندی استفاده میشود دارای پارامترهای گوناگونی است که به بررسی آن میپردازیم.
نمونه کد قبلی دارای تنظیمات پیشفرض برای پارامترهای خاصی است، شما میتوانید سفارشیسازی بیشتری داشته باشید:
// Register Custom Taxonomy function wpp_custom_taxonomy() { $labels = array( 'name' => __( 'Taxonomies', 'text_domain' ), 'singular_name' => __( 'Taxonomy', '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' ), 'separate_items_with_commas' => __( 'Separate items with commas', 'text_domain' ), 'search_items' => __( 'Search Items', 'text_domain' ), 'add_or_remove_items' => __( 'Add or remove items', 'text_domain' ), 'choose_from_most_used' => __( 'Choose from the most used items', 'text_domain' ), 'not_found' => __( 'Not Found', 'text_domain' ), ); $rewrite = array( 'slug' => 'taxonomy', 'with_front' => true, 'hierarchical' => false, ); $capabilities = array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', 'delete_terms' => 'manage_categories', 'assign_terms' => 'edit_posts', ); $args = array( 'labels' => $labels, 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true, 'query_var' => '', 'rewrite' => $rewrite, 'capabilities' => $capabilities, 'update_count_callback' => 'Update_Count_Callback', ); register_taxonomy( 'taxonomy', array( 'post' ), $args ); } // Hook into the 'init' action add_action( 'init', 'wpp_custom_taxonomy', 0 );
تابع register_taxonomy دارای ۳ پارامتر ورودی است که پارامتر اول نام طبقهبندی را مشخص میکند، پارامتر دوم آرایهای از نامهای نوع پستها مانند نوشتههای پیشفرض (post) یا هر نوع پست سفارشی که نیاز داشته باشید در آن از طبقهبندی استفاده کنید است، پارامتر سوم آرایهای از خصوصیتهای طبقهبندی که نیاز داریم است که به بررسی آن میپردازیم:
- labels : آرایهای از عنوانهای استفاده شده در صفحات مربوط به طبقهبندی، شامل:
- name : عنوان طبقهبندی
- singular_name : عنوان تکی طبقهبندی
- menu_name : عنوان منو
- all_items : عنوان تمام آیتمها
- parent_item : عنوان برای استفاده در حالتی که طبقهبندی قابلیت سلسلهای را داشته باشد
- parent_item_colon : مانند parent_item
- new_item_name : عنوان طبقهبندی جدید
- add_new_item : عنوان افزودن آیتم جدید
- edit_item : ویرایش طبقهبندی
- update_item : بروزرسانی
- separate_items_with_commas : عنوان نوشته برای حالتی که طبقهبندی قابلیت سلسلهای نداشته باشد تا کاربر بتواند آیتمها را با کاما (,) اضافه کند.
- search_items : جستجوی طبقهبندی
- add_or_remove_items : افزودن یا حذف آیتم
- choose_from_most_used : انتخاب از بیشتر استفاده شده
- not_found : در صورتی که طبقهبندی وجود نداشته باشد نمایش داده میشود
- hierarchical : به معنی سلسه مراتبی است قابلیتی که این امکان را میدهد که آیتمی زیر مجموعه آیتم دیگر شود، اگر برابر true باشد مانند طبقهبندی پیشفرض دستهها و اگر برابر false قرار دهید مانند طبقهبندی پیشفرض برچسب خواهد شد.
- public : وضعیت امکان کویری گرفتن از طبقهبندی را مشخص میکند. پیشفرض true
- show_ui : نمایش در مدیریت
- show_admin_column : نمایش ستون طبقهبندی در صفحه پستها
- show_in_nav_menus : امکان استفاده/نمایش در فهرستها
- show_tagcloud : قابلیت استفاده در ابزارک برچسب ابری
- query_var : مقداری که در کویری پیشفرض وردپرس تنظیم میشود برای کویری گرفتن از طبقهبندی (اختیاری)
- rewrite : در صورتی که بخواهید طبقهبندی را تغییر دهید میتوانید از این امکان استفاده کنید در غیر این صورت برابر با نامی هست که برای طبقهبندی تعیین میکنید. به صورت آرایهای تعیین میشود (اختیاری)
- slug : تعیین نامک نوع پست سفارشی
- with_front : تعیین استفاده در آدرسدهی پستها
- hierarchical : قابلیت سلسلهای در صورتی که این امکان باشد
- capabilities : لیست آرایهای تعیین قابلیتهای نویسنده/کاربر برای تغییر در طبقهبندی (اختیاری)
- manage_terms : قابلیت نویسنده برای نمایش طبقهبندی، پیشفرض manage_categories
- edit_terms : قابلیت نویسنده برای ویرایش طبقهبندی، پیشفرض manage_categories
- delete_terms : قابلیت نویسنده برای ویرایش طبقهبندی، پیشفرض manage_categories
- assign_terms : قابلیت نویسنده برای نسبت دادن به مطالب نوع پست، پیشفرض edit_posts
- update_count_callback : در صورتی که بخواهید بعد از نسبت دادن پستی به طبقهبندی تابعی اجرا شود میتوانید از این پارامتر استفاده کنید (اختیاری).
نمایش طبقهبندی مطالب
برای نمایش آیتمهای طبقهبندی مطالب نیاز هست کد زیر را در حلقه مطالب قرار دهید:
<?php the_terms( get_the_ID(), 'taxonomy', 'Taxonomy: ', ', ', ' ' ); ?>
پارامترهای تابع the_terms:
- شناسه/ID پست
- نام Taxonomy/طبقهبندی
- نوشتهای که قبل از نمایش آیتمهای طبقهبندیها نمایش داده میشود
- جداکننده بین آیتمهای طبقهبندیها
- نوشتهای که بعد از نمایش آیتمهای طبقهبندیها نمایش داده میشود
آدرس طبقهبندی
بعد از ثبت به “تنظیمات » پیوند یکتا” بروید و یک بار تنظیمات را ذخیره کنید
بایگانی طبقهبندی در صورتی که ساختار پیوند یکتا برروی پیشفرض باشد به صورت زیر است
http://example.com/?taxonomy_name=term
در غیر این صورت:
http://example.com/taxonomy_name/term
قالب نمایش طبقهبندی
برای نمایش بایگانی پیشفرض از فایل archive.php استفاده خواهد شد، در صورتی که میخواهید فایل دیگری تعیین کنید از قالب نام taxonomy-{taxonomy-slug}.php استفاده کنید، مانند: taxonomy-articles_tag.php
منبع: وردپرس پارسی
ممنون خیلی خوب توضیح دادید مفید بود