×

آشنایی با term ها در وردپرس

term در وردپرس توسعه وردپرس

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

term های وردپرس چه هستند؟

برای معرفی term باید با مفهوم taxonomy در وردپرس آشنا باشید. به منوی نوشته ها در پنل وردپرس بروید. این منو دارای چهار زیر منو به شرح زیر هست:

  • همه نوشته ها
  • افزودن نوشته
  • دسته ها
  • برچسب ها

دسته ها و برچسب ها هر کدام یک taxonomy هستند. پس taxonomy برای دسته بندی کردن مطلب استفاده می شود. البته ممکن است نام “دسته ها” غلط انداز باشد. در واقع دسته ها و برچسب ها هر دو برای دسته بندی کردن مطلب استفاده می شوند و از نظر فنی تفاوتی با هم ندارند و هر دو taxonomy محسوب می شوند.

فرض کنیم یک سایت فیلم و سریال داریم که می خواهیم دسته بندی های متفاوتی را برای فیلم ها در نظر بگیریم. مثلا می خواهیم فیلم ها را بر اساس نویسنده، کارگردان، سال ساخت، بازیگران برتر و … دسته بندی کنیم. هر کدام از این موارد یک taxonomy هستند و معیار دسته بندی فیلم محسوب می شوند.

حالا هر taxonomy درون خودش ممکن است یک یا چند دسته داشته باشد. مثلا سال ساخت می تواند ۱۹۹۰، ۱۹۹۱، ۱۹۹۲ و … باشد. به دسته های درونی taxonomy اصطلاحا term گفته می شود. پس سالهای ۱۹۹۰، ۱۹۹۱، ۱۹۹۲ هر کدام یک term برای taxonomy سال ساخت محسوب می شوند.

خوشبختانه در وردپرس هیچ محدودیتی در ویرایش، حذف و یا ایجاد taxonomy ها و term ها نداریم.

 

دسترسی به term های یک پست تایپ

همانطور که مشاهده فرمودید، پست تایپ post یا همان نوشته ها در وردپرس دارای دو taxonomy پیشفرض به نام های دسته ها و برچسب ها می باشد. برای دسترسی به term های یک taxonomy باید روی منوی آن کلیک نمایید. مثلا برای دسترسی به term های دسته های نوشته باید روی دسته ها در منوی نوشته ها کلیک نمایید.

 

terms-in-wordpress

 

به آدرس صفحه نگاه کنید:


https://novintech.info/wp-admin/edit-tags.php?taxonomy=category

 

چنانچه می بینید این صفحه برای مدیریت term های این taxonomy ایجاد شده است. نام این فایل در هسته وردپرس edit-tags.php (موجود در فولدر wp-admin) و مقدار کوئری taxonomy آن برابر category می باشد.

هر taxonomy یک slug یا شناسه دارد. شناسه taxonomy دسته ها، category می باشد. یافتن شناسه taxonomy ها برای کار کردن با آن ضروری است. شناسه برچسب ها post_tag می باشد. در ووکامرس شناسه دسته ها product_cat و شناسه برچسب ها product_tag می باشد.

عنوان این صفحه که دسته ها باشد نام taxonomy است. در قسمت سمت راست می توانیم term جدید ایجاد کنیم. لیست term های موجود برای این taxonomy هم سمت چپ قابل مشاهده می باشد.

 

افزودن term جدید برای یک taxonomy

ابتدا باید وارد صفحه آن taxonomy شویم. در بالا ما وارد صفحه مدیریت taxonomy دسته ها برای پست تایپ نوشته (post) شدیم. هر taxonomy در زیرمنوی پست تایپ خودش وجود دارد.

توسط فرم سمت راست می توانیم term جدید خودمان را وارد کنیم.

مطابق عکس بالا مقادیر زیر را می توانیم برای term جدید خودمان وارد نماییم:

۱- نام term: این مقدار مشخصه ظاهری آن term می باشد و در لیست سمت چپ و همچنین صفحه ویرایش پست تایپ ( یا جاهای دیگر ) نمایش داده می شود.

۲- نامک term: این مقدار slug، شاخص یا شناسه آن term می باشد و در موارد متعدد استفاده می شود. مهم ترین استفاده آن در url صفحه دسته بندی می باشد. مثلا لینک زیر صفحه دسته بندی با دسته توسعه وردپرس می باشد.

https://novintech.info/category/توسعه-وردپرس/

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

اگر inspect بگیرید و اینپوت نامک را سلکت کنید، مشاهده می کنید که نام این اینپوت همان slug می باشد که در وردپرس فارسی به نامک ترجمه شده است.

۳- دسته ی مادر term: وجود دسته ی مادر نشان از سلسله مراتبی بودن این taxonomy دارد. در وردپرس دو نوع taxonomy داریم:

  1. hierarchical taxonomy یا taxonomy سلسله مراتبی
  2. non-hierarchical taxonomy یا taxonomy غیر سلسله مراتبی

در taxonomy های سلسله مراتبی می توانیم برای term های والد، term های فرزند ایجاد نماییم. مانند taxonomy دسته ها در پست تایپ نوشته . اما taxonomy برچسب های این پست از نوع non-hierarchical می باشند و نمی توانیم برای term های والد، term فرزند در نظر بگیریم. (اصطلاحا فقط ایجاد term های یک سطحی امکان پذیر است)

تصویری از نحوه نمایش نمونه ای از این دو taxonomy را در زیر مشاهده می نمایید. (پست تایپ post)

terms-in-wordpress2

 

هر taxonomy در صفحه ویرایش یا افزودن پست تایپ، در یک متاباکس جداگانه و در سمت چپ صفحه قرار می گیرد. مشاهده می کنید که نحوه نمایش این دو taxonomy با هم متفاوت است. چون اولی hirarchical و سلسله مراتبی است و قابلیت افزودن term های فرزند به term های والد را داراست ولی دومی non-hierarchical و غیرسلسله مراتبی است و فقط می توانیم term های یک سطحی ایجاد کنیم.

اگر term فرزندی برای term والد در نظر بگیریم، آدرس صفحه آرشیو به صورت زیر می باشد:

https://novintech.info/category/بهینه-سازی-دیتابیس-وردپرس/توسعه-وردپرس/

 

در لینک بالا، کلمه category نامک taxonomy می باشد. ( البته همیشه در لینک های وردپرس اینگونه نیست. فقط در صفحات آرشیو، این بخش نشان از نامک taxonomy دارد. در صفحات singular این بخش نشان از نامک پست تایپ دارد). در ادامه لینک، توسعه وردپرس نشان از والد بودن این term دارد و در نهایت بهینه سازی دیتابیس وردپرس، term فرزند بوده و در این صفحه تمامی نوشته هایی که این term را دارند نشان داده خواهد شد.

همچنین هنگامی که یک term فرزند ایجاد می کنید، آن term در جدول term ها، دقیقا در زیر term والد خود قرار گرفته و یک خط تیره کنار آن قرار می گیرد.

۴- توضیح term: در این فیلد می توانید توضیحات موردنظر برای این term را وارد نمایید. توضیحات به صورت پیش فرض مهم نیستند، با این حال برخی از پوسته‌ها ممکن است آنها را نمایش دهند.

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

 

محل ذخیره term ها در دیتابیس وردپرس

term ها در وردپرس تقریبا مشابه پست تایپ ها، کامنت ها و کاربران در نظر گرفته شده اند. با این تفاوت که دو جدول دیگر برای term ها وجود دارد.

اگر وارد دیتابیس وردپرس شوید، مشاهده می کنید که جدول های term به صورت زیر می باشند: (با فرض پیشوند _wp)

  • wp_termmeta
  • wp_terms
  • wp_term_relationships
  • wp_term_taxonomy

این جدول ها حاوی اطلاعات کاملی در مورد term ها می باشند که در زیر بیشتر آن ها را لیست کرده ایم:

  1. نام term
  2. نامک term
  3. والد term
  4. توضیحات term
  5. taxonomy این term
  6. تعداد مطالبی که این term را دارا می باشند
  7. اطلاعات اضافی term
  8. و …

اگر قصد دارید در مورد جدول های دیگر بیشتر بخوانید به این صفحه مراجعه نمایید.

۱- جدول wp_terms

در این جدول اطلاعات بیس یک term ذخیره می شود و دارای چهار ستون است.

  • ستون term_id: این ستون مشخصه یک term می باشد. هر term یک id منحصر به فرد دارد که برای موارد مختلف بالاخص برای اطلاعات اضافی و ارتباط با جدول های دیگر از آن استفاده می شود.
  • ستون name: نام ظاهری term در این ستون ذخیره می شود.
  • ستون slug: نامک term در این ستون ذخیره می شود.
  • ستون term_group: این ستون هیچ کاربردی ندارد و می توانید نادیده بگیرید.

terms-in-wordpress3

همانطور که قبلا گفتیم، در هنگام افزودن یک term جدید، چهار فیلد نام، نامک، دسته مادر و توضیحات وارد می شود (در نصب استاندارد وردپرس و با فرض نبودن هیچ پلاگین) . از این چهار مورد، دو مورد در جدول wp_terms ذخیره شده و باقی موارد (دسته مادر و توضیحات) را باید در جدول های دیگر جستجو کنیم. دقت کنید که تعدد جدول ها برای راحتی استفاده و محدود نشدن توسعه taxonomy ها و term ها می باشد.

وقتی یک term را از طریق پنل حذف می کنیم، رکوردهای مرتبط موجود در جدول های wp_terms و wp_term_taxonomy حذف می شود.

 

۲- جدول wp_term_taxonomy

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

  • ستون term_taxonomy_id: هر رکوردی که به این جدول افزوده می شود، اطلاعات taxonomy یک term می باشد. لذا اصولا باید تعداد رکوردهای این جدول با تعداد رکوردهای جدول wp_terms برابر باشد. ستون term_taxonomy_id در این جدول یک مشخصه برای هر رکوردی است که در این جدول وارد می شود. (معادل term_id در جدول wp_terms)
  • ستون term_id: این ستون آی دی term را در بر دارد تا برای دریافت اطلاعات taxonomy یک term خاص از آن استفاده نماییم.
  • ستون taxonomy: این ستون، نامک taxonomy این ترم را در خودش دارد.
  • ستون description: این ستون، توضیحات آن term را در بر دارد. (همان فیلدی که در هنگام ایجاد term با عنوان توضیحات وارد نمودیم)
  • ستون parent: این ستون term_id والد خودش را دارا می باشد. (همان سلکت باکسی که در هنگام ایجاد term با عنوان دسته مادر وجود داشت)
  • ستون count: این ستون تعداد مطالبی که این term را دارا می باشند نشان می دهد. اگر دقت کنید آخرین ستون جدول term ها در صفحه taxonomy، ستون تعداد می باشد.

terms-in-wordpress4

۳- جدول wp_term_relationships

برای اینکه بتوانیم مطالب با یک term یا taxonomy خاص را دریافت کنیم، نیاز داریم یک ارتباطی بین پست تایپ ها و term ها وجود داشته باشد. جدول wp_term_relationships وظیفه این ارتباط را برعهده دارد.

این جدول حاوی سه ستون به شرح زیر می باشد:

  • ستون object_id: این ستون نگه دارنده آی دی مطلب می باشد. این آی دی به عنوان شناسه مطلب در جدول wp_posts و ستون آی دی وجود دارد.
  • ستون term_taxonomy_id: این ستون به جدول wp_term_taxonomy مرتبط است و آی دی رکورد موجود در آن جدول را در خود دارد (ستون term_taxonomy_id). در واقع ربط دهنده آبجکت های مطلب با اطلاعات term هایش همین ستون می باشد. دقت کنید که رابطه پست تایپ ها با term ها یک رابطه many-to-many می باشد. چون هر مطلب می تواند چند term داشته باشد و هر term می تواند به چند مطلب تعلق یابد.
  • ستون term_order: این ستون برای مرتب سازی term ها در نظر گرفته شده است. (استفاده ای ندارد)

terms-in-wordpress5

۴- جدول wp_termmeta

چنانچه مشاهده کردیم در term ها با taxonomy سلسله مراتبی می توانستیم ۴ مورد و در term ها با taxonomy غیر سلسله مراتبی می توانستیم ۳ مورد اطلاعات در مورد term داشته باشیم. حال اگر term ما به اطلاعات بیشتری نیاز داشته باشد باید چه کنیم. فرضا نام مستعار term و یا تصویر شاخص آن.

خوشبختانه در وردپرس قابلیت دادن اطلاعات اضافی یا meta به term ها نیز داده شده است. (چنانچه به کامنت ها، پست تایپ ها و کاربران داده شده است). جدول wp_termmeta وظیفه حفظ اطلاعات اضافی term ها را بر عهده دارد.

این جدول دارای چهار ستون می باشد:

  • ستون meta_id: این ستون نگه دارنده آی دی هر رکورد می باشد.
  • ستون term_id: آی دی term در این ستون نگه داشته می شود.
  • ستون meta_key: نام یا کلید اطلاعات متا در این ستون ذخیره می شود.
  • ستون meta_value: مقدار اطلاعات متا در این ستون ذخیره می شود.

دقت شود که هر رکورد این جدول، یک اطلاعات اضافی term می باشد. جدول wp_termmeta با term ها یک رابطه ی one-to-many دارد. چون یک term می تواند چند اطلاعات meta داشته باشد ولی یک اطلاعات meta فقط به یک term مربوط است.

 

در پست های بعدی به صورت مفصل در مورد کار با term ها در وردپرس با استفاده از توابع هسته صحبت خواهیم کرد.

 

پاسخی بگذارید

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