آشنایی با Taxonomy وردپرس
در وردپرس قابلیتهایی برای دستهبندی مطالب وجود دارد که دسته و برچسب نوشتهها نمونهای از آن هستند، حال اگر بخواهیم این دستهبندی را با تنوع و تفکیکپذیری بیشتری اعمال کنیم نیاز به قابلیتی داریم که در وردپرس با نام Taxonomy شناخته میشود و امکان ایجاد و سفارشیسازی خوبی دارد.هر نوع دسته بندی که اضافه میکنید میتواند نحوه نمایش کاملا مجزایی در سایت داشته باشد، برای اینکار کافیست مطابق با ویدئو آموزشی نام و محتوای فایل های خود را مدیریت کنید. از Taxonomyها فقط برای نوع پست سفارشی استفاده نمیشود و شما میتوانید برای نوشتههای پیشفرض یا در توسعه افزونههای خود برای بخش مدیریت آیتمهای خود از آن استفاده کنید، نمونه طبقهبندی برای سال انتشار فیلمها در سایت.
روش ساده ایجاد طبقهبندی
افزونههایی مانند Simple Taxonomy، Custom Taxonomy Creator، GD Custom Posts And Taxonomies Tools و سایتهایی مانند GenerateWP راهنمای خوبی برای ساخت Taxonomy هستند.
Taxonomies تنها یک کلمه نیست و در بسیاری از مواقع بسیاری از توسعه دهندگان وب سایت (Web developers) مفهوم Taxonomies و Term را اشتباه دریافت و درک میکنند.
به عبارت ساده، Taxonomies روشی برای گروه بندی کردن یکسری موارد با یکدیگر میباشد.
در وردپرس، دو نوع Taxonomies درنظر گرفته میشود:
برچسبها و دستهبندیها (Tags و Categories)
اما یادمان باشد حداقل در مورد وردپرس، Taxonomies میتواند به صورت طبقه بندی شده و یا غیرطبقهبندی شده باشد. سلسه مراتبی و غیر سلسله مراتبی. (Hierachical or non hierarchical)
در وردپرس، ترم Term به معنای دسته بندی، گروه یا زیر شاخهای از Taxonomy میباشد . این در حالی است که خود Taxonomy میتواند به یکی از صورتهای ذکر شده در قبل باشد. به طور کلی، Term یک عنوان دارد، یک توضیح و یک نامک (slug)
برای Taxonomy سلسله مراتبی میتوان مثل دستهها (category) یک Term اصلی (Parent term ) تعریف نمود.
بنابر تعریف بالا، میتوان به راحتی ارتباط بین Taxonomies و terms را درک نمود.
ترمها از سه قسمت تشکیل شدهاند:
- Sulg
- Title
- Description
اگر با taxonomy سلسه مراتبی کار میکنید (همان دستهبندیها) ترم نیز میتواند یک Term اصلی داشته باشند (Parent Term) برای شفافسازی بیشتر، Taxonomyنیاز به داشتن اسم و نوع پست دارد. (پستی که به آن مرتبط است).
Taxonomyو Term به گونهای لازم و ملزوم یکدیگر هستند این ارتباط مستقیم در دیاگرام زیر به خوبی نمایش داده شده است.
روش دستی ایجاد طبقهبندی
برای افزودن دستی طبقهبندی جدید کدها را میتوانید در افزونه یا فایل functions.php پوسته استفاده کنید.
برای شروع میخواهیم کد زیر را بررسی کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | // 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 که برای ثبت طبقهبندی استفاده میشود دارای پارامترهای گوناگونی است که به بررسی آن میپردازیم.
نمونه کد قبلی دارای تنظیمات پیشفرض برای پارامترهای خاصی است، شما میتوانید سفارشیسازی بیشتری داشته باشید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | // 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 : در صورتی که بخواهید بعد از نسبت دادن پستی به طبقهبندی تابعی اجرا شود میتوانید از این پارامتر استفاده کنید (اختیاری).
نمایش طبقهبندی مطالب
برای نمایش آیتمهای طبقهبندی مطالب نیاز هست کد زیر را در حلقه مطالب قرار دهید.
1 | <?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
Term meta data چیست؟
بعد از بیان تعریف Taxonomies و Term باید مفهوم واژه Term metadata نیز آشنا شوید که در نسخه ۴٫۴ وردپرس به بعد از آن استفاده میشود.
Term metadata شیوهای برای اضافه نمودن اطلاعات در Taxonomy میباشد.
Term meta data به شما کمک میکند که اطلاعات را در Database دستهبندی کنید. این دستهبندی اطلاعات در مورد زمانی که term ایجادشده، چه کسی Term را ایجاد نموده، و اینکه چگونه تعدادی از پستها توسط یک ترم مشخص، tag شدهاند، هستند. حتی این امکان نیز فراهم میشود که یک تصویر به یک term مرتبط شود.
از آنجائیکه term meta data سطح دلخواهی از اطلاعات را میتواند مدیریت و پشتیبانی نماید، امکانات بسیار زیادی را در رابطه با اطلاعات و استفاده از آن در اختیار ما قرار میدهد.
اکنون که با مفهوم Taxonomy, Term و term meta data آشنا شدید به راحتی میتوانید از آنها در کار با سیستم مدیریت محتوای وردپرس استفاده کنید.
اگر با Plugin, Theme یا توسعه راهکارهای خاص برای مشتریان خود در وردپرس سر و کار دارید، بهتر است که قسمت Codex را نیز بخوانید.
پایدار باشید.
این نوشته چندتا لایک داره؟
دیدگاه خود را بیان کنید