آشنایی با ساختار جداول در دیتابیس وردپرس

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

لازم به ذکر است که دیتابیس وردپرس از ۱۲ جدول تشکیل شده است که یکی از آنها دیگر کاربردی ندارد(wp_links) و بلااستفاده است، برای کار با جداولی که در ادامه بررسی خواهیم کرد می توانید از ابزار phpMyAdmin استفاده نمائید، البته ممکن است افزونه هایی که نصب کرده اید در کنار این ۱۲ مورد جداول اختصاصی و موردنیاز خود را ایجاد کرده باشند.

روش نامگذاری جداول وردپرس

به طور کلی در پایگاه داده وردپرس نام هر جدول از دو بخش پیشوند(Prefix) و نام جدول تشکیل شده است، پیشوند جدول به صورت پیش فرض “_wp” است که می توانید آن را در فرآیند نصب وردپرس و یا از طریق کانفیگ وردپرس تغییر دهید.

فلسفه وجودی Prefix بدین دلیل است که امکان نصب چند وردپرس بر روی یک دیتابیس وجود داشته باشد، هنگامی که وردپرس شبکه یا Multisite را فعال می کنید وردپرس برای اینکه بتواند جداول مربوط به هر نصب را مدیریت کند در بین پیشوند و نام جدول از ID وب سایت استفاده می کند.

ساختار جداول وردپرس شبکه

 

توجه داشته باشید که پیشوند جدول در فایل wp-config.php ذخیره می شود، ما در طول این آموزش از مقدار “_wp”  استفاده خواهیم کرد.

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix  = 'wp_';

۱- جدول wp_posts

قبل از بررسی جدول فوق لازم است با مفهوم Post Type آشنا شوید، “پست تایپ” انواع محتوایی است که توسط وردپرس پشتیبانی و استفاده می شود، به عبارت ساده تر زمانی که یک تصویر شاخص به نوشته خود اضافه می کنید در حال استفاه از پست تایپ Attachment هستید، وقتی صفحه “تماس با ما” ایجاد می کنید از “پست تایپ” Page استفاده کرده اید، وقتی یک خبر منتشر می کنید با پست تایپ Post اینکار را انجام داده اید.

به طور کلی وردپرس از انواع زیر پشتیبانی می کند:

  • Post
  • Page
  • Attachment
  • Revision
  • Navigation Menu
  • Custom CSS
  • Changesets
  • User Data Request

نوع دیگری هم به نام Custom Post Type ها هستند که بر اساس پیچیدگی پروژه توسط توسعه دهنده تعریف می شود.

این مقدمه را گفتیم تا بدانید که از جدول wp_posts تنها برای ذخیره نوشته یا Post استفاده نمی شود، بلکه کلیه پست تایپ ها در جدول فوق ثبت می شوند. اما دلیل اینکه از posts برای نامگذاری آن استفاده شده به این خاطر است که وردپرس در ابتدا یک سیستم Blogging بوده و قابلیت پست تایپ بعدها به آن اضافه شده است.

با این حال جدول wp_posts یکی از مهمترین جداول وردپرس است که از ۲۳ فیلد زیر تشکیل شده است:

جدول wp_posts در وردپرس

در ادامه هر کدام از ستون ها را بررسی می کنیم، توجه داشته باشید که هر کجا از کلمه پست استفاده کردیم منظورمان کلیه پست تایپ ها می باشد:

۱- ID: آی دی یا شناسه منحصر به فردی(Identification Number) که به هر پست اختصاص داده می شود.

۲- post_author: شناسه نویسنده ای که پست را ایجاد کرده است(ارجاع به فیلد ID جدول wp_users).

۳- post_date: تاریخ و زمان انتشار پست.

۴- post_date_gmt: تاریخ و زمان GMT که پست منتشر شده است.

۵- post_content: محتوای کامل و بدون تغییر پست، شامل HTML، شورتکد و …

۶- post_title: عنوان پست.

۷- post_excerpt: خلاصه یا چکیده پست.

۸- post_status: وضعیت جاری یک پست که  شامل مقادیر زیر است:

  • منتشر شده (Publish)
  • پیش نویس (Draft)
  • خصوصی (Private)
  • زباله دان (Trash)
  • ذخیره خودکار پیش نویس (Auto-Draft)
  • زمانبندی پست برای انتشار در آینده (Future)
  • در حال بررسی (Pending)

۹- comment_status: تعیین اینکه آیا امکان ثبت دیدگاه بر روی پست وجود دارد یا خیر.

۱۰- ping_status: تعیین اینکه آیا PingBacks برای پست فعال است یا خیر.

۱۱- post_password: رمز عبور دسترسی به محتوای پست که به صورت متن ساده(Plain Text) ذخیره می شود.

۱۲- post_name: نام یا نامک(Slug) مربوط به پیوند یکتای پست.

۱۳- to_ping: لیستی از URL ها که پس از آپدیت یا انتشار پست Ping خواهند شد.

۱۴- pinged: لیستی از URLها که برای آنها Ping ارسال شده است.

۱۵- post_modified: تاریخ و زمان آخرین بروزرسانی.

۱۶- post_modified_gmt: تاریخ و زمان GMT آخرین بروزرسانی.

۱۷- post_content_filtered: پلاگین ها از این فیلد برای کش کردن یک نسخه از post_content استفاده می کنند.

۱۸- post_parent: شناسه پست والد(رابطه پدر فرزندی).

۱۹- guid: پیوند یکتا یا آدرس پست.

۲۰- menu_order: چیدمان یا Order که بیشتر در پست تایپ Page استفاده می شود.

۲۱- post_type: نوع پست تایپ که در بالا بررسی کردیم.

۲۲- post_mime_type: این فیلد فقط در پست تایپ Attachment استفاده می شود و نوع ضمیمه را مشخص می کند، مثلا image/jpeg.

۲۳- comment_count: مجموع تعداد دیدگاه ها یا نظرات پست.

۲- جدول wp_postmeta

جدول postmeta هر گونه اطلاعات اضافی مربوط به جدول wp_posts را نگهداری می کند، در واقع این اطلاعات به صورت کلید و مقدار(Key/Value) ذخیره خواهند شد. ساختار جدول فوق بدین صورت است:

جدول wp_postmeta در وردپرس

۱- meta_id: شناسه منحصر به فردی که به هر ردیف اختصاص داده می شود.

۲- post_id: شناسه پست (ارجاع به فیلد ID جدول wp_posts).

۳- meta_key: کلید اطلاعات.

۴- meta_value: مقدار اطلاعات.

جدول postmeta در عین حال که فقط ۴ فیلد دارد اما بسیار قدرتمند و انعطاف پذیر است، چرا که وابسته به ستون یا فیلد جدیدی نیست. همانطور که ملاحظه کردید جدول posts از ۲۳ فیلد تشکیل شده است که تقریبا اطلاعات پایه ای مربوط به هر پست را ذخیره می کند، حالا فرض کنید می خواهید علاوه بر ۲۳ فیلد موجود اطلاعاتی نظیر تعداد کالا، قیمت کالا، موجودی انبار، تخفیف و هزاران فیلد دیگر را ذخیره کنید، آیا باید به ازای هر کدام از این موارد یک فیلد جدید در جدول posts ایجاد کنیم؟

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

در پست آموزشی چگونه از زمینه های دلخواه یا Custom Fields استفاده کنیم؟ اطلاعات خوبی در رابطه با جدول postmeta پیدا خواهید کرد.

۳- جدول wp_comments

کلیه دیدگاه ها یا نظرات کاربران در این جدول ثبت می شود، ساختار wp_comments اینگونه است:

جدول wp_comments در وردپرس

۱- comment_ID: شناسه منحصر به فردی که به هر ردیف اختصاص داده می شود.

۲- comment_post_ID: شناسه پستی که دیدگاه برای آن ثبت شده است(ارجاع به فیلد ID جدول wp_posts).

۳- comment_author: نام نویسنده دیدگاه.

۴- comment_author_email: ایمیل نویسنده دیدگاه.

۵- comment_author_url: نشانی یا آدرس نویسنده دیدگاه.

۶- comment_author_IP: آدرس IP نویسنده دیدگاه.

۷- comment_date: تاریخ و زمان ارسال کامنت.

۸- comment_date_gmt: تاریخ و زمان GMT کامنت ارسال شده.

۹- comment_content: محتوای دیدگاه(متن اصلی).

۱۰- comment_karma:  برخی پلاگین ها از این فیلد برای مدیریت دیدگاه استفاده می کنند.

۱۱- comment_approved: اگر دیدگاه کاربر تایید شده باشد وضعیت approval ذخیره می شود.

۱۲- comment_agent: پلتفرم کاربری که دیدگاه را ارسال کرده است(اطلاعات مرورگر، نوع سیستم عامل و …).

۱۳- comment_type: نوع دیدگاه را مشخص می کند:

  • comment
  • pingback
  • trackback

۱۴- comment_parent: در صورتی که به دیدگاهی پاسخ داده شود(Reply) آی دی دیدگاه پدر را نگهداری می کند(رابطه پدر فرزندی).

۱۵- user_id: شناسه کاربری که در وب سایت ثبت نام کرده است(ارجاع به فیلد ID جدول wp_users).

۴- جدول wp_commentmeta

یکی دیگر از جداول متا wp_commentmeta است که اطلاعات اضافی مربوط به wp_comments را نگهداری می کند، ساختار این جدول به صورت زیر می باشد:

جدول wp_commentmeta در وردپرس

۱- meta_id: شناسه منحصر به فردی که به هر ردیف اختصاص داده می شود.

۲- comment_id: شناسه دیدگاه(ارجاع به فیلد ID جدول wp_comments).

۳- meta_key: کلید اطلاعات.

۴- meta_value: مقدار اطلاعات.

۵- جدول wp_terms

قبل از معرفی جدول فوق بهتر است با مفهوم تکسانومی(Taxonomy) آشنا شوید، همانطور که می دانید وردپرس به شما اجازه می دهد “پست تایپ” نوشته(Post) و پست تایپ های سفارشی را به روشهای مختلفی دسته بندی کنید، برای این منظور برچسب(Tag) یا دسته(Category) را در اختیارتان قرار می دهد که به آنها تکسانومی می گویند.

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

واژه terms نیز به آیتم هایی اشاره دارد که تکسانومی از آنها برای دسته بندی محتوا استفاده می کند، به بیان ساده تر جدول terms اطلاعات مربوط به انواع دسته، برچسب، فهرست (منو) و … که در وردپرس تعریف کرده اید را ذخیره می کند.

ساختار جدول wp_terms نیز بدین صورت است:

جدول wp_terms در وردپرس

۱- term_id: شناسه منحصر به فردی که به هر term اختصاص داده می شود.

۲- name: نام خوانا و مناسب ترم.

۳- slug: نامک یا اسلاگ ترم که در پیوندهای یکتا استفاده می شود.

۴- term_group: گروه بندی ترم ها در قالب یک نام مستعار(Alias).

۶- جدول wp_termmeta

اطلاعات اضافی مربوط به جدول wp_terms را نگهداری می کند، ساختار این جدول به صورت زیر می باشد:

جدول wp_termmeta در وردپرس

۱- meta_id: شناسه یکتایی که به هر ردیف اختصاص داده می شود.

۲- term_id: شناسه ترم(ارجاع به فیلد term_id جدول wp_terms).

۳- meta_key: کلید اطلاعات.

۴- meta_value: مقدار اطلاعات.

۷- جدول wp_term_taxonomy

فرض کنید در جدول wp_terms اطلاعات پایه مربوط به انواع دسته و برچسب را تعریف کردید(مثلا دسته “توسعه وب”)، حالا وردپرس از کجا متوجه خواهد شد که Web Development مربوط به تکسانومی برچسب است یا دسته؟

برای حل این موضوع جدول دیگری به نام term_taxonomy وجود دارد که رابطه بین ترم و تکسانومی را ذخیره می کند، ساختار جدول فوق بدین صورت است:

جدول wp_term_taxonomy در وردپرس

۱- term_taxonomy_id: شناسه منحصر به فردی که به هر ردیف اختصاص داده می شود.

۲- term_id: شناسه ترم(ارجاع به فیلد term_id جدول wp_terms)

۳- taxonomy: نامک تکسانومی که به صورت زیر می باشد:

  • category
  • post_tag
  • link_category
  • post_format
  • Custom Taxonomies که توسط توسعه دهنده تعریف می شود.

۴- description: توضیحات ترم

۵- parent: در صورتی که تکسانومی سلسه مراتبی یا hierarchical باشد آی دی Parent ترم در این فیلد ذخیره می شود، اگر دقت کرده باشید در هنگام تعریف دسته گزینه ای با نام “مادر دسته” وجود دارد که دقیقا به همین منظور استفاده می شود، در واقع می توانید یک دسته را زیر مجموعه دسته دیگری قرار دهید.

۶- count: تعداد پست هایی که به یک ترم اختصاص داده شده است.

۸- جدول wp_term_relationships

پس از اینکه ارتباط بین هر ترم با تکسانومی را در جدول wp_term_taxonomy برقرار کردیم زمان آن رسیده است که از آنها برای دسته بندی پست ها استفاده کنیم، برای این منظور به جدول سومی به نام wp_term_relationships احتیاج داریم که این کار برای ما انجام دهد.

انتخاب دسته و برچسب در وردپرس

در تصویر زیر ساختار این جدول نشان داده شده است:

جدول wp_term_relationships در وردپرس

۱- object_id: شناسه پست(ارجاع به جدول wp_posts).

۲- term_taxonomy_id: شناسه جدول ترم تکسانومی(ارجاع به جدول wp_term_taxonomy).

۳- term_order: امکان مرتب سازی هر ترم به ازای پست.

۹- جدول wp_users

مدیریت کاربران یکی از ویژگی های قدرتمند وردپرس است که توسط جدول زیر پیاده سازی می شود:

جدول wp_users در وردپرس

۱- ID: شناسه منحصر به فردی که به هر کاربر اختصاص داده می شود.

۲- user_login: نام کاربری(همان User Name).

۳- user_pass: کلمه عبور رمز شده(Hashed) کاربر.

۴- user_nicename: این فیلد در پیوند یکتای کاربر استفاده خواهد شد و به صورت پیش فرض با مقدار فیلد user_login ست می شود.

۵- user_email: ایمیل کاربر

۶- user_url: آدرس وب سایت.

۷- user_registered: تاریخ و زمان ثبت کاربر.

۸- user_activation_key:  کلید موقتی که بررسی می کند آیا کاربر قبل از لاگین حساب خود را فعال کرده است یا خیر.

۹- user_status: وضعیت کاربر که توسط وردپرس استفاده نمی شود.

۱۰- display_name: نمایش نام که می تواند ترکیبی از نام، نام خانوادگی، نام + نام خانوادگی، لقب و نام کاربری باشد، مقدار این فیلد توسط گزینه “نمایش عمومی نام” از قسمت تنظیمات کاربر تعیین می شود.

۱۰- جدول wp_usermeta

این جدول متا نیز اطلاعات اضافی مربوط به wp_users را ذخیره می کند، به عنوان مثال در بخش تنظیمات کاربری وردپرس مواردی مثل نام، نام خانوادگی، زندگی نامه(Bio)، اکانت توییتر و فیس بوک در این جدول ذخیره می شوند، ساختار usermeta به صورت زیر می باشد:

جدول wp_usermeta در وردپرس

۱- umeta_id: شناسه یکتایی که به هر ردیف اختصاص داده می شود.

۲- post_id: شناسه کاربر(ارجاع به فیلد ID جدول wp_users).

۳- meta_key: کلید اطلاعات.

۴- meta_value: مقدار اطلاعات.

پیشنهاد می کنیم پست آموزشی چگونه اکانت اینستاگرام و لینکدین را به پروفایل وردپرس اضافه کنیم؟ را مطالعه فرمائید.

۱۱- جدول wp_options

جدول options وظیفه مهمی بر عهده دارد و آن هم نگهداری از تنظیمات و پیکربندی های(Configuration) وب سایت وردپرسی است، برخی از این تنظیمات شامل تعداد پست در هر صفحه(Posts Per Page)، دسته یا طبقه پیش فرض(Default Category)، ساختار پیوندهای یکتا(Permalink) و قالب جاری یا فعال سایت می باشد، در تصویر زیر برخی دیگر از این گزینه ها را مشاهده می کنید.

تنظیمات وردپرس

ساختار جدول فوق بدین صورت است:

جدول wp_options در وردپرس

۱- option_idشناسه منحصر به فردی که به هر ردیف اختصاص داده می شود.

۲- option_name: کلید اطلاعات.

۳- option_value: مقدار اطلاعات.

۴- autoload: این فیلد تعیین می کند آیا یک آپشن در هر صفحه به صورت خودکار بارگذاری شود یا خیر، به عنوان مثال اگر گزینه ای تعریف کردید که فقط در یک صفحه خاص از آن استفاده می کنید مقدار autoload را no قرار دهید.

۱۲- جدول wp_links

در بسیاری از بلاگ های(قدیمی) بخشی به نام “لینک به دوستان” یا “دوستان ما” وجود دارد که به منظور تبادل لینک با سایرین استفاده می شود، اما وردپرس از نسخه ۳٫۵ به بعد این قابلیت را به طور کامل از بخش ادمین خود حذف کرده است، با این حال هنوز هم جدول links در دیتابیس وردپرس وجود دارد و دلیل آن هم وب سایت های قدیمی هستند که همچنان از جدول فوق استفاده می کنند.

دیاگرام دیتابیس وردپرس

پس از بررسی ۱۲ جدول موجود در دیتابیس وردپرس حالا می توانید چونگی ارتباط آنها با یکدیگر را در تصویر زیر مشاهده کنید:

ساختار جداول وردپرس

جمع بندی

جداول متا نقش بسیار مهمی در انعطاف پذیری وردپرس دارند، حتی در پلاگین نویسی کمک حال شما خواهند بود، جداول postmeta ،termmeta ،usermeta و commentmeta بیشتر نیازمندی های یک پلاگین را پوشش می دهند، اما اگر افزونه شما پیچیدگی های زیادی دارد بهتر است جدول اختصاصی ایجاد کنید.

نظرات و سوالات کاربران

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

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