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

نوشته شده توسط ۶ سال پیش
درجه سختی : پیشرفته مدت زمان یادگیری : متوسط

آگاهی از ساختار دیتابیس وردپرس و همچنین درک رابطه ها در دیتابیس، کمک زیادی به فهم ما از این سیستم میکنه. یک وردپرس تازه نصب شده و استاندارد دارای ۱۲ جدول پیش فرض هست و این جداول با هم در ارتباط هستند. ابتدا ما مروری بر این جدول ها خواهیم داشت و در نوشته بعدی رابطه بین این جدول ها رو بررسی می کنیم.

wordpress-core-tables

 

لیست جدول های پیش فرض وردپرس(با پیشوند wp_ در هنگام نصب) به این صورت است:

wp_posts
wp_postmeta
wp_comments
wp_commentmeta
wp_termmeta
wp_terms
wp_term_taxonomy
wp_term_relationships
wp_users
wp_usermeta
wp_options
wp_links

 

جدول wp_posts

این جدول دربرگیرنده اصلی ترین آیتم های وردپرس است. پست ها، برگه ها، پست تایپ ها، آیتم های فهرست ها، رسانه و…(که به اسم “نوشته” توضیح میدم) در این جدول ذخیره می شوند. ساختار این جدول بصورت زیر است:

ID – شماره منحصر به فرد هر نوشته
post_author – شماره منحصر به فرد نویسنده
post_date – تاریخ ایجاد
post_date_gmt – تاریخ ایجاد بصورت GMT
post_content – محتوای نوشته
post_title – عنوان نوشته
post_excerpt – توضیح کوتاه
post_status – وضعیت که می تواند منتشر شده، در حال بررسی، خصوصی و.. باشد
comment_status – وضعیت دیدگاه برای نوشته
ping_status – وضعیت پینگ برای نوشته
post_password – رمزعبور برای مشاهده
post_name – نامک نوشته
to_ping – آدرس هایی که بعد از برزورسانی نوشته باید به آنها پینگ دهد
pinged – آدرس هایی که به آنها پینگ نوشته شد
post_modified – تاریخ آخرین تغییر
post_modified_gmt – تاریخ آخرین تغییر بصورت GMT
post_content_filtered – محتوای فیلتر شده که بیشتر برای استفاده در افزونه هاست
post_parent – رابطه بین این نوشته و دیگر داده ها(برای مثال عکس یک نوشته)
guid – یک نشانه منحصر به فرد برای مشخص کردن آدرس
menu_order – ردیف قرارگیری این نوشته
post_type – نوع این نوشته(پست تایپ)
post_mime_type – نوع MIME که برای رسانه استفاده میشه
comment_count – تعداد دیدگاه، پینگ و ترک بک ها

 

جدول wp_postmeta

این جدولی است که مقادیر زمینه های دلخواه پست، برگه و پست تایپ ها در آن ذخیره می شود.

meta_id – شماره منحصر به فرد هر زمینه
post_id – شماره منحصر به فرد نوشته
meta_key – نام زمبنه دلخواه
meta_value – مقدار زمبنه دلخواه

 

جدول wp_comments

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

comment_ID – شماره منحصر به فرد هر دیدگاه
comment_post_ID – شماره منحصر به فرد نوشته ای که دیدگاه به آن ارسال شد
comment_author – نام نویسنده دیدگاه
comment_author_email – ایمیل نویسنده دیدگاه
comment_author_url – آدرس وب سایت نویسنده دیدگاه
comment_author_IP – شماره IP نویسنده دیدگاه
comment_date – تاریخ ارسال دیدگاه
comment_date_gmt – تاریخ ارسال دیدگاه بصورت GMT
comment_content – محتوای دیدگاه
comment_karma – این مورد در خود وردپرس استفاده ای نمی شود
comment_approved – تایید شدن یا نشدن دیدگاه
comment_agent – نمایش مشخصاتی مانند مرورگر، سیستم عامل و… ارسال کننده دیدگاه
comment_type – نوع دیدگاه، اینکه دیدگاه، پینگ یا ترک بک باشد
comment_parent – مشخص کننده اینکه دیدگاه والد است یا پاسخ به دیدگاه دیگر
user_id – اگر نویسنده دیدگاه کاربر سایت باشد، منحصر به فرد کاربر ذخیره می شود

 

جدول wp_commentmeta

این جدولی است که مقادیر زمینه های دیدگاه ها در آن ذخیره می شود. شما می توانید همانند پست ها، برای دیدگاه ها نیز زمینه دلخواه اضافه کنید.

meta_id – شماره منحصر به فرد هر سطر
comment_id – شماه شماره منحصر به فرد دیدگاه این زمینه
meta_key –نام زمینه
meta_value – مقدار زمینه

 

جدول wp_termmeta

این جدولی است که مقادیر زمینه های ترم ها(terms) در آن ذخیره می شود.

meta_id – شماره منحصر به فرد هر سطر
term_id – شناسه منحصر به فرد پست مرتبط با داده
meta_key – کلید شناسایی برای داده
meta_value – مقدار برای داده

 

جدول wp_terms

در این جدول مقادیر ترم ها(terms) در آن ذخیره می شوند.

term_id – شماره منحصر به فرد هر ترم
name – نام نمایشی هر ترم
slug – نامک هر ترم(جهت نمایش در آدرس)
term_group – برای استفاده در پوسته ها یا افزونه ها جهت دسته بندی ترم ها برای استفاده از نام مستعار.

 

جدول wp_term_taxonomy

جدولی جهت ذخیره طبقه بندی(تاکسونومی)ها و مقادیر آنها.

term_taxonomy_id – شماره منحصر به فرد هر سطر
term_id – شناسه ترم مرتبط که به جدول wp_terms ارجاع داده می شود
taxonomy – نامک طبقه بندی که هم در طبقه بندی های پیش فرض و هم در طبقه بندی هایی که در سیستم ثبت می شوند استفاده می شود
description – توضیحات ترم در این طبقه بندی
parent – شناسه ترم والد که برای سلسله مراتب طبقه بندی ها استفاده می شود. مانند دسته بندی ها
count – تعداد پست ها و موضوعات(مانند پست و برگه  ها) اختصاص داده شده به ترم برای این طبقه بندی

 

جدول wp_term_relationships

در این جدول روابط ترم و تاکسونومی ها با پست ها و موضوعات مشخص می شود

object_id – شناسه پست یا موضوع که به جدول wp_posts ارجاع داده می شود
term_taxonomy_id – شناسه ترم یا طبقه که به جدول wp_term_taxonomy ارجاع داده می شود
term_order – جهت مشخص کردن ترتیب ترم برای یک شی(استفاده خاصی نمی شود)

 

جدول wp_users

در این جدول مشخصات کلی کاربر ذخیره می شود

ID – شناسه منحصر به فرد برای کاربر
user_login – نام کاربر منحصر به فرد برای کاربر
user_pass – پسورد هش شده کاربر
user_nicename – نام نمایشی کاربر
user_email – آدرس ایمیل کاربر
user_url – آدرس سایت کاربر
user_registered – ساعت و تاریخ ثبت نام کاربر
user_activation_key – کلید فعالسازی برای بازیابی پسورد کاربر
user_status – در نسخه های قبل وردپرس ۳.۰ برای مشخص کردن یک کاربر به عنوان اسپمر استفاده می شد
display_name – نام نمایشی عمومی در سایت است که می تواند نام کاربر، نام نمایشی یا نام و نام خانوادگی مشخص شده در متای کاربر باشد

 

جدول wp_usermeta

جدول متای کاربری که زمینه های کاربر را می توان در آن ذخیره کرد

umeta_id – شناسه منحصر به فرد هر ردیف
user_id – شناسه کاربر که به جدول wp_users ارجاع داده می شود
meta_key – کلید شناسایی داده
meta_value – مقدار برای داده

 

جدول wp_options

دراین جدول مقادیر داده های پیش فرض و تنظیمات اصلی وردپرس و همچنین تنظیمات اضافه قابل استفاده در پوسته یا افزونه ذخیره می شود

option_id – شناسه منحصر به فرد هر ردیف
option_name – کلید شناسایی داده
option_value – مقدار برای داده که بعضا بصورت سریال شده نیز ذخیره می شود
autoload – بررسی میکند که تنظیمات بصورت خودکار توسط تابع wp_load_alloptions اجرا شده باشد

 

جدول wp_links

این جدول عملا در نسخه های جدید وردپرس استفاده خاصی نمی شود و برای نگهداری مقادیر بخش لینک های وردپرس استفاده می شود

link_id – شناسه منحصر به فرد هر ردیف
link_url – آدرس لینک
link_name – نام لینک
link_image – آدرس عکس انتخاب شده برای لینک
link_target – انتخاب نوع باز شدن لینک مانند در صفحه جاری یا صفحه جدید یا…
link_description – توضیحات لینک
link_visible – عمومی یا خصوصی بودن لینک
link_owner – شناسه کاربر ایجاد کننده لینک که به جدول wp_users ارجاع داده می شود
link_rating – مقدار رتبه لینک که بین ۰ تا ۱۰ است
link_updated – ساعت و تاریخ ایجاد لینک
link_rel – ارتباط لینک
link_notes – توضیحات اضافه برای لینک
link_rss – آدرس خوراک لینک

 

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

مرتضی گرانسایه


ارسال دیدگاه شما

دیدگاه های ارسال شده برای این مطلب
  1. اسماعیل ابراهیم گفت:

    سلام
    مرتضی جان خسته نباشی واقعاً
    از زمانی که برای تهیه این مقاله گذاشتی متشکرم
    یه پیشنهاد – من فکر می کنم دوستانی که در اول راه هستن تنها بخشی که ممکنه یکم براشون گنگ باشه بخش تاکسونومی ها و ترم ها و رابطه بین اونها باشه – اگر یکم بیشتر توی این پست یا یه پست جدا توضیحش بدی خیلی خوبه
    موفق و پیروز باشی

    • مرتضی گرانسایه گفت:

      سلام
      حتما ما توی پست ها و آموزشهای بعدی در مورد ترم و تاکسونومی ها توضیحات بیشتری رو ارائه می کنیم هم اینکه مثال های عملی میزنیم تا درکش ساده تر بشه.

      ممنون

  2. فرهاد گفت:

    اطلاعات مفیدی بود ممنون از آقای گرانسایه بابت تهیه این مطلب ارزشمند.

    چرا جدول wp_links رو کلا حذف نمی‌کنند؟ الان دیگه فکر کنم حتی وب سایت‌های قدیمی هم بیخیال بخش پیوند‌های وبلاگ شدند!

    در مورد کار با دیتابیس وردپرس بصورت cli هم مطالبی تهیه کنید هم عالی میشه.

    • مرتضی گرانسایه گفت:

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

      موفق باشید

  3. Black_Sky گفت:

    مثل همیشه عالی بود مرتضی جان و پرکاربرد

  4. شیخی گفت:

    سلام مهندس
    ممنون از توضیحات خوبتون.
    بنده جداول را چک کردم و مشکل عجیب در جدول wp-option داشتم اونم اینه که حجمش ۱ گیگ است و نسبت به بقیه خیلی زیاد است. یک بار هم که خاستم با یه افزونه اپتیمایز کنم در همین جدول گیر کردم و سایتم بالا نیومد و با کلی زحمت دوباره بالا اوردم.
    لطفا منو راهنمایی کنید که این جدولو چطوری درست کنم؟

    • پارسا کافی گفت:

      حجم ۱ گیگ غیرعادی هست برای این جدول، بهتره از فردی که آشنایی خوبی با وردپرس داره کمک بگیرید.
      و احتمالا transient ها زیاد شدن و حذف نشدن، با افزونه‌های کمکی میتونید حذف کنید.
      https://wordpress.org/plugins/search/transient/

    • مرتضی گرانسایه گفت:

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

  5. مسعود گفت:

    تو رو خدا جوابم بدید:
    من نفهمیدم اگر بخوام دوتا مثلا تم نصب کنم باید دوتا دیتابیس با نام مختلف بسازم؟
    یا مثلا چیزهای شبیه به هم رو توی دیتابیس های جداگانه انجام بشه؟
    جیزی که توی ذهن من تداعی شد مث کتیگوری یا دسته بندی و طبقه بندی میمونه.ولی نفهمیدم مثلا میشه من بخوام قالب نصب کنم دیتابیس رو همون که واسه نصب وردپرس توی لوکال هاست ایجاد کردم بزارم.فعلا دارم با کمک سایت شما تمرین میکنم.
    به زبان ساده لطفا راهنمایی کنید البته با رسم شکل??

    • مرتضی گرانسایه گفت:

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

  6. معین علیزاده گفت:

    مقاله مفیدی بود. تشکر از وقتی که برای انتشار گذاشتید.

  7. محمد بانشی گفت:

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

    آدرس سایت من Baneshi.ir است و وردپرس شبکه!
    حال میخواهم آدرس زیر را داشته باشم:
    portal.Baneshi.ir
    اما متاسفانه باز نمیشود!

    بذارید بیشتر توضیح بدم که چی شد. قبلا وردپرسم بر روی آدرس زیر بود:
    Farsi.baneshi.ir
    وقتی شبکه کردم به خوبی باز میشد اما دیدم آدرس دهی سایت درحال شبکه بر روی آن آدرس کمی طولانی و ناجور هست:
    Sub.farsi.baneshi.ir
    بنابر این سایت را از ساب دامنه Farsi به دامنه اصلی منتقل کردم سپس اقدام به شبکه سازی مجدد کردم تا شبکه ها بدین شکل شود:
    Sub.baneshi.ir
    همه موارد درست شده الا اینکه اکنون ساب دامنه های جدید باز نمیشود چون روی ساب دامنه قبلی شبکه شده بوده اگر بتونم جداول مربوطه از پایگاه داده برای وردپرس شبکه رو حذف کنم و دوباره شبکه کنم فکر میکنم مشکل رفع بشه. اگر بتونین راهنماییم کنین ممنون میشم.

  8. مصطفی گفت:

    سلام خسته نباشید
    ایا در جدول wp_posts فیلد id به صورت identity هست یعنی اگه بخوام تز طریق اسکریپت insert مقدار بریزم داخلش فیلد id رو باید خودم کننرل کنم یا نیاز نیست و خودش مقدار دهی میکنه ، ممنون

  9. sara گفت:

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

    • مرتضی گرانسایه گفت:

      بصورت رابطه ای هست و در سه جدول زیر رابطه میخورن:
      wp_terms
      wp_term_taxonomy
      wp_term_relationships

      توضیحات این سه جدول رو مجدد بخونید متوجه روابط میشید.

  10. هادی مولودی گفت:

    باسلام بنده یوزر و پسورد وردپرس خودرا در مرحله طراحی سایت فراموش کردم .برای بازیابی یا تغییران بایستی چکارکنم باتشکر

    • مرتضی گرانسایه گفت:

      اگر به دیتابیس دسترسی دارید، میتونید یک رمز جدید رو انتخاب و بعد md5 کنید، مقدار رشته md5 شده رو در جدول users در فیلد user_pass کپی کنید.

  11. محمد گفت:

    با سلام و سپاس از توضیحات خوبتون
    سوالم اینه آدرس عکسهای پست ، مثل تصویر شاخص، در کدام بخش ذخیره میشن؟

  12. محمد گفت:

    خیلی ممنون از شما. چند وقت بود با این مشکل مواجه بودم. ممنون

  13. احمدی گفت:

    سلام
    در جوملا تمام جداول مجزا هستن
    چرا در وردپرس همه اطلاعات داخل یه Table معروف ریخته میشه
    اینجور لود سایت سنگین نمیشه؟

  14. محمد گفت:

    با سلام بنده یه سایت فروشگاهی داره به صورت خیلی عجیب جدول وی پی اپشن دیتابیس حجمش شده ۱.۵ گیگ نمیدونم واقعا چطور مشکل رو برطرف کنم اگر میشه کمک کنید

  15. علی گفت:

    عرض سلام و ادب و احترام
    بسیار عالی بود و من استفاده کردم
    یک سوال دارم از خدمتتون: با چه کدی میتونم به یک پست یک دسته بندی یا برچسب اضافه کنم؟
    مثلا آیدی پست من «۳۲۱» است و دسته «مطالعه» رو داره و می خوام دسته «کتاب» رو به دسته هایی که داره اضافه کنم.
    تشکر از پاسخ خوبتون…

  16. محمد گفت:

    سلام
    ورد پرس نصب کردم خطای fatal eror
    رو میده مشکل از چیه.

  17. محمد گفت:

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

  18. علی گفت:

    سلام و احترام در بخش wp_mail_bank_logs چه اطلاعاتی موجود است
    با تشکر

  19. MesterSye گفت:

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

  20. احمد فرخ منش گفت:

    خیلی عالی استفاده کردم درود بر شما