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

در بخش نوشته‌های وردپرس، دو گزینه «دسته‌ها» و «برچسب‌ها» را مشاهده می‌کنیم. وردپرس از این دو بخش برای طبقه‌بندی محتوای یک پست‌تایپ استفاده می‌کند. به این روش طبقه‌بندی، تکسانومی یا Taxonomy می‌گوییم.

تکسانومی‌ها می‌توانند به پست‌تایپ پیش‌فرض نوشته‌ها یا یک پست‌تایپ سفارشی متصل شوند. اگر با پست‌تایپ‌ها آشنایی ندارید، اینجا کلیک کنید.

اگر دسته‌ها و برچسب‌های پیش‌فرض نیاز شما را برطرف نمی‌کنند، می‌توانید یک تکسانومی سفارشی یا 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 );
}

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

در کد زیر، تابع add_action() تابع موردنظر ما را به هوک init متصل می‌کند. وردپرس هنگام اجرای این هوک، تابع ثبت تکسانومی‌ها را اجرا می‌کند.

این تابع سه ورودی دارد:

  • ورودی اول، نام هوک را مشخص می‌کند. در این مثال از هوک init استفاده کرده‌ایم.
  • ورودی دوم، نام تابعی است که وردپرس باید اجرا کند. در این مثال نام تابع tin_register_taxonomies است.
  • ورودی سوم، اولویت اجرای تابع را تعیین می‌کند. در این مثال اولویت را روی عدد صفر قرار داده‌ایم.
add_action( 'init', 'tin_register_taxonomies', 0 );

تابع ثبت تکسانومی‌ها

با استفاده از تابع register_taxonomy() می‌توانیم یک تکسانومی جدید در وردپرس ثبت کنیم. در مثال ما، تکسانومی اول سلسله‌مراتبی است و مانند دسته‌ها عمل می‌کند. تکسانومی دوم نیز غیرسلسله‌مراتبی است و ساختاری مانند برچسب‌ها دارد.

تابع register_taxonomy() سه ورودی اصلی دریافت می‌کند:

  • نام تکسانومی: ورودی اول، کلید یا نام تکسانومی را مشخص می‌کند. در این مثال از 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 );

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

تابع register_taxonomy() تنظیمات مختلفی دارد. با کمک این تنظیمات می‌توانیم نحوه عملکرد و نمایش تکسانومی را کنترل کنیم.

تنظیم public

public: این گزینه مشخص می‌کند که تکسانومی برای استفاده عمومی در نظر گرفته شده است یا خیر. اگر مقدار آن را برابر با true قرار دهیم، وردپرس تنظیمات مرتبط با مدیریت و نمایش عمومی را نیز به‌صورت پیش‌فرض فعال می‌کند.

اگر مقدار public برابر با true باشد، گزینه‌های زیر نیز مقدار پیش‌فرض true را دریافت می‌کنند. البته می‌توانیم مقدار هرکدام را جداگانه تغییر دهیم.

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

دسترسی به صفحات تکسانومی

publicly_queryable: این گزینه دسترسی عمومی به صفحات تکسانومی را کنترل می‌کند. برای مثال، دسته‌ها و برچسب‌های وردپرس صفحه آرشیو و آدرس مخصوص خود را دارند.

اگر مقدار این گزینه را برابر با true قرار دهیم، کاربران می‌توانند از سمت سایت به صفحه آرشیو تکسانومی دسترسی داشته باشند. اگر مقدار آن false باشد، وردپرس اجازه دسترسی عمومی به این صفحات را نمی‌دهد.

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

تعیین ساختار والد و فرزند

hierarchical: این گزینه ساختار تکسانومی را مشخص می‌کند. اگر مقدار آن true باشد، تکسانومی مانند دسته‌ها عمل می‌کند. در این حالت، ترم‌ها می‌توانند والد و فرزند داشته باشند.

اگر مقدار آن را برابر با false قرار دهیم، تکسانومی مانند برچسب‌ها عمل می‌کند و ساختار والد و فرزند ندارد.

تفاوت اصلی ساختار دسته‌ها و برچسب‌ها را گزینه hierarchical مشخص می‌کند.

نمایش رابط مدیریت تکسانومی

show_ui: این گزینه رابط مدیریت تکسانومی را در پنل مدیریت وردپرس کنترل می‌کند.

اگر مقدار آن true باشد، وردپرس صفحه مدیریت ترم‌های تکسانومی را در اختیار مدیر سایت قرار می‌دهد. اگر مقدار آن را false قرار دهیم، وردپرس رابط پیش‌فرض مدیریت تکسانومی را نمایش نمی‌دهد.

این گزینه زمانی کاربرد دارد که بخواهیم یک رابط کاربری اختصاصی برای مدیریت تکسانومی طراحی کنیم.

نمایش تکسانومی در منوی مدیریت

show_in_menu: این گزینه مشخص می‌کند که وردپرس لینک مدیریت تکسانومی را در منوی پنل مدیریت قرار دهد یا خیر.

اگر مقدار آن false باشد، وردپرس لینک تکسانومی را از منو حذف می‌کند. بااین‌حال، در صورت فعال بودن show_ui ممکن است همچنان بتوانیم با واردکردن آدرس مستقیم به صفحه مدیریت آن دسترسی پیدا کنیم.

این گزینه با publicly_queryable تفاوت دارد. گزینه show_in_menu منوی پنل مدیریت را کنترل می‌کند؛ اما publicly_queryable دسترسی عمومی به صفحه تکسانومی در سایت را مشخص می‌کند.

استفاده از تکسانومی در فهرست‌ها

این گزینه دسترسی به تکسانومی در بخش نمایش و فهرست‌ها را کنترل می‌کند. اگر مقدار آن true باشد، می‌توانیم ترم‌های تکسانومی را به فهرست سایت اضافه کنیم. در ضورتی که گزینه Taxonomy را در صفحه فهرست‌ها مشاهده نکردید، بخش «تنظیمات صفحه» را بررسی کنید.

اگر مقدار این تنظیم false باشد، وردپرس آن را در بخش انتخاب آیتم‌های فهرست قرار نمی‌دهد.

نمایش در ابر برچسب

show_tagcloud: این گزینه مشخص می‌کند که تکسانومی در کنترل‌های ابزارک ابر برچسب قرار بگیرد یا خیر.

اگر مقدار آن true باشد، ابزارک ابر برچسب می‌تواند از این تکسانومی استفاده کند. اگر مقدار آن را false قرار دهیم، وردپرس نام تکسانومی را در گزینه‌های این ابزارک قرار نمی‌دهد.

نمایش در ویرایش سریع

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: با استفاده از این گزینه می‌توانیم نامک تکسانومی را در آدرس صفحات آن تغییر دهیم.

گزینه rewrite یک آرایه دریافت می‌کند. برای تعیین نامک دلخواه، مقدار موردنظر را در کلید slug قرار می‌دهیم.

پس از ثبت تکسانومی یا تغییر تنظیمات rewrite، یک‌بار به بخش «تنظیمات ← پیوندهای یکتا» بروید و روی دکمه ذخیره تغییرات کلیک کنید. وردپرس با این کار قوانین بازنویسی آدرس‌ها را تازه‌سازی می‌کند.

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

وردپرس برای نمایش صفحات آرشیو تکسانومی‌های سفارشی از ساختار مشخصی استفاده می‌کند. فرقی ندارد تکسانومی ما سلسله‌مراتبی یا غیرسلسله‌مراتبی باشد.

برای شخصی‌سازی این صفحات، سه روش اصلی داریم.

روش اول: قالب عمومی تمام تکسانومی‌های سفارشی

در روش اول، یک قالب عمومی برای آرشیو تمام تکسانومی‌های سفارشی ایجاد می‌کنیم. برای این کار باید فایل زیر را در پوشه قالب قرار دهیم:

taxonomy.php

اگر وردپرس قالب اختصاصی‌تری برای تکسانومی پیدا نکند، از این فایل استفاده می‌کند. عملکرد این فایل تا حدودی شبیه فایل archive.php است؛ اما فقط آرشیو تکسانومی‌های سفارشی را پوشش می‌دهد.

روش دوم: قالب اختصاصی یک تکسانومی

در روش دوم، برای یک تکسانومی مشخص قالب اختصاصی می‌سازیم. این قالب صفحات آرشیو تمام ترم‌های همان تکسانومی را پوشش می‌دهد.

نام فایل باید از الگوی زیر پیروی کند:

taxonomy-{taxonomy}.php

برای مثال، اگر نام تکسانومی ما tin_product_type باشد، نام فایل را به شکل زیر می‌نویسیم:

taxonomy-tin_product_type.php

روش سوم: قالب اختصاصی یک ترم

در روش سوم، برای یکی از ترم‌های یک تکسانومی قالب اختصاصی ایجاد می‌کنیم.

برای مثال، فرض کنید تکسانومی «نوع محصولات» را ساخته‌ایم و «تلویزیون» یکی از ترم‌های آن است. اگر بخواهیم فقط صفحه ترم تلویزیون قالب متفاوتی داشته باشد، باید از الگوی زیر استفاده کنیم:

taxonomy-{taxonomy}-{term}.php

بخش {taxonomy} نام تکسانومی و بخش {term} نامک ترم موردنظر است. برای مثال، اگر نام تکسانومی tin_product_type و نامک ترم television باشد، فایل زیر را می‌سازیم:

taxonomy-tin_product_type-television.php

وردپرس ابتدا به‌دنبال قالب اختصاصی ترم می‌گردد. اگر آن را پیدا نکند، قالب اختصاصی تکسانومی را بررسی می‌کند. سپس به‌ترتیب فایل‌های taxonomy.php، archive.php و index.php را بررسی خواهد کرد.

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

کلمات کلیدی - تگ‌ها

از کلمات کلیدی و تگ‌های مربوط به قسمت ۱ – ایجاد تکسانومی / Taxonomy در وردپرس دیدن فرمایید.

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

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه قسمت ۱ – ایجاد تکسانومی / Taxonomy در وردپرس در شبکه‌های اجتماعی

نظرات شما برای ما ارزشمند است

متاسفانه تاکنون پیامی برای این مطلب ثبت نشده است. شما اولین شخصی باشید که پیام می‌گذارد.

نظرات کاربران

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.