آگاهی از ساختار دیتابیس وردپرس و همچنین درک رابطه ها در دیتابیس، کمک زیادی به فهم ما از این سیستم میکنه. یک وردپرس تازه نصب شده و استاندارد دارای 12 جدول پیش فرض هست و این جداول با هم در ارتباط هستند. ابتدا ما مروری بر این جدول ها خواهیم داشت و در نوشته بعدی رابطه بین این جدول ها رو بررسی می کنیم.
لیست جدول های پیش فرض وردپرس(با پیشوند 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 – در نسخه های قبل وردپرس 3.0 برای مشخص کردن یک کاربر به عنوان اسپمر استفاده می شد
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 – مقدار رتبه لینک که بین 0 تا 10 است
link_updated – ساعت و تاریخ ایجاد لینک
link_rel – ارتباط لینک
link_notes – توضیحات اضافه برای لینک
link_rss – آدرس خوراک لینک
خب، ما مروری کلی روی جداول وردپرس انجام دادیم. برای درک بهتر این توضیحات و فهم راحتتر روابط این جداول، بهترین راه مطالعه بیشتر و تمرین های مکرر با دیتابیس وردپرس هست. اگر در مورد هر بخشی برای شما سوال ایجاد شده میتونید در زیر همین پست بپرسید، همچنین خوشحال میشیم نظرات شما رو هم بدونیم.
سلام
مرتضی جان خسته نباشی واقعاً
از زمانی که برای تهیه این مقاله گذاشتی متشکرم
یه پیشنهاد – من فکر می کنم دوستانی که در اول راه هستن تنها بخشی که ممکنه یکم براشون گنگ باشه بخش تاکسونومی ها و ترم ها و رابطه بین اونها باشه – اگر یکم بیشتر توی این پست یا یه پست جدا توضیحش بدی خیلی خوبه
موفق و پیروز باشی
سلام
حتما ما توی پست ها و آموزشهای بعدی در مورد ترم و تاکسونومی ها توضیحات بیشتری رو ارائه می کنیم هم اینکه مثال های عملی میزنیم تا درکش ساده تر بشه.
ممنون
اطلاعات مفیدی بود ممنون از آقای گرانسایه بابت تهیه این مطلب ارزشمند.
چرا جدول wp_links رو کلا حذف نمیکنند؟ الان دیگه فکر کنم حتی وب سایتهای قدیمی هم بیخیال بخش پیوندهای وبلاگ شدند!
در مورد کار با دیتابیس وردپرس بصورت cli هم مطالبی تهیه کنید هم عالی میشه.
سلام
خواهش میکنم
چون فکرشون به این صورت هست که شاید یکسری از سایتها از قبل لینک ها رو داشتن و هنوز دارن توی سایتشون نمایش میدن. و اینکه این بخش لینک ها هنوز هم با زدن یک هوک قابل فعال شدن هست. یعنی کامل از سیستم حذف نشده.
در مورد cli هم حتما پست میزاریم.
موفق باشید
مثل همیشه عالی بود مرتضی جان و پرکاربرد
ممنون مهدی جان 🙂
سلام مهندس
ممنون از توضیحات خوبتون.
بنده جداول را چک کردم و مشکل عجیب در جدول wp-option داشتم اونم اینه که حجمش ۱ گیگ است و نسبت به بقیه خیلی زیاد است. یک بار هم که خاستم با یه افزونه اپتیمایز کنم در همین جدول گیر کردم و سایتم بالا نیومد و با کلی زحمت دوباره بالا اوردم.
لطفا منو راهنمایی کنید که این جدولو چطوری درست کنم؟
حجم ۱ گیگ غیرعادی هست برای این جدول، بهتره از فردی که آشنایی خوبی با وردپرس داره کمک بگیرید.
و احتمالا transient ها زیاد شدن و حذف نشدن، با افزونههای کمکی میتونید حذف کنید.
https://wordpress.org/plugins/search/transient/
بر اثر استفاده زیاد از افزونه ها و همچنین بعضی از پوسته های آماده که بخش تنظیمات بزرگی دارن این نوع مشکل ایجاد میشه. باید افرادی که علاوه بر وردپرس به دیتابیس هم تسلط خوبی دارن این موضوع رو بررسی کنن.
تو رو خدا جوابم بدید:
من نفهمیدم اگر بخوام دوتا مثلا تم نصب کنم باید دوتا دیتابیس با نام مختلف بسازم؟
یا مثلا چیزهای شبیه به هم رو توی دیتابیس های جداگانه انجام بشه؟
جیزی که توی ذهن من تداعی شد مث کتیگوری یا دسته بندی و طبقه بندی میمونه.ولی نفهمیدم مثلا میشه من بخوام قالب نصب کنم دیتابیس رو همون که واسه نصب وردپرس توی لوکال هاست ایجاد کردم بزارم.فعلا دارم با کمک سایت شما تمرین میکنم.
به زبان ساده لطفا راهنمایی کنید البته با رسم شکل??
سلام
خیر ساده هست، ببینید پوسته وردپرس عموما با دیتابیس کاری نداره و در حقیقت وقتی فعال میشه اطلاعات پوسته در آپشن های وردپرس ذخیره میشن.
مقاله مفیدی بود. تشکر از وقتی که برای انتشار گذاشتید.
سلام پیرامون جداول وردپرس شبکه میخواستم توضیح بدید.
آدرس سایت من Baneshi.ir است و وردپرس شبکه!
حال میخواهم آدرس زیر را داشته باشم:
portal.Baneshi.ir
اما متاسفانه باز نمیشود!
بذارید بیشتر توضیح بدم که چی شد. قبلا وردپرسم بر روی آدرس زیر بود:
Farsi.baneshi.ir
وقتی شبکه کردم به خوبی باز میشد اما دیدم آدرس دهی سایت درحال شبکه بر روی آن آدرس کمی طولانی و ناجور هست:
Sub.farsi.baneshi.ir
بنابر این سایت را از ساب دامنه Farsi به دامنه اصلی منتقل کردم سپس اقدام به شبکه سازی مجدد کردم تا شبکه ها بدین شکل شود:
Sub.baneshi.ir
همه موارد درست شده الا اینکه اکنون ساب دامنه های جدید باز نمیشود چون روی ساب دامنه قبلی شبکه شده بوده اگر بتونم جداول مربوطه از پایگاه داده برای وردپرس شبکه رو حذف کنم و دوباره شبکه کنم فکر میکنم مشکل رفع بشه. اگر بتونین راهنماییم کنین ممنون میشم.
از این بخش میتونید بررسی کنید:
https://codex.wordpress.org/Database_Description#Multisite_Table_Overview
سلام خسته نباشید
ایا در جدول wp_posts فیلد id به صورت identity هست یعنی اگه بخوام تز طریق اسکریپت insert مقدار بریزم داخلش فیلد id رو باید خودم کننرل کنم یا نیاز نیست و خودش مقدار دهی میکنه ، ممنون
نه نیازی نیست به id مقدار بدید بصورت خودکار مقداردهی میشه.
سلام. ممنون از مطالب
برچسب ها و دسته بندی هر پست کجا ذخیره میشه. در کدام فیلد از کدام جدول.
بصورت رابطه ای هست و در سه جدول زیر رابطه میخورن:
wp_terms
wp_term_taxonomy
wp_term_relationships
توضیحات این سه جدول رو مجدد بخونید متوجه روابط میشید.
باسلام بنده یوزر و پسورد وردپرس خودرا در مرحله طراحی سایت فراموش کردم .برای بازیابی یا تغییران بایستی چکارکنم باتشکر
اگر به دیتابیس دسترسی دارید، میتونید یک رمز جدید رو انتخاب و بعد md5 کنید، مقدار رشته md5 شده رو در جدول users در فیلد user_pass کپی کنید.
سلام من یک سایت میخواستم تو وردپرس. باید چیکار کنم
با سلام و سپاس از توضیحات خوبتون
سوالم اینه آدرس عکسهای پست ، مثل تصویر شاخص، در کدام بخش ذخیره میشن؟
رکورد تصاویر در جدول posts هست.
خیلی ممنون از شما. چند وقت بود با این مشکل مواجه بودم. ممنون
سلام
در جوملا تمام جداول مجزا هستن
چرا در وردپرس همه اطلاعات داخل یه Table معروف ریخته میشه
اینجور لود سایت سنگین نمیشه؟
شعار وردپرس سادگی هست، و خب به خاطر به همین هم جداول دیتابیس تا حد امکان ساده طراحی شده.
با سلام بنده یه سایت فروشگاهی داره به صورت خیلی عجیب جدول وی پی اپشن دیتابیس حجمش شده ۱.۵ گیگ نمیدونم واقعا چطور مشکل رو برطرف کنم اگر میشه کمک کنید
احتمالا transient ها زیاد شدن و حذف نشدن
با افزونههای کمکی میتونید حذف کنید
https://wordpress.org/plugins/search/transient/
عرض سلام و ادب و احترام
بسیار عالی بود و من استفاده کردم
یک سوال دارم از خدمتتون: با چه کدی میتونم به یک پست یک دسته بندی یا برچسب اضافه کنم؟
مثلا آیدی پست من «۳۲۱» است و دسته «مطالعه» رو داره و می خوام دسته «کتاب» رو به دسته هایی که داره اضافه کنم.
تشکر از پاسخ خوبتون…
سلام
این آدرس رو ببینید:
https://developer.wordpress.org/reference/functions/wp_set_post_terms/
سلام
ورد پرس نصب کردم خطای fatal eror
رو میده مشکل از چیه.
سلام – ما میخواهیم به صورت گروهی توسط اکسل تعدادی مطلب وارد وردپرس کنیم . ستون های مورد نیاز برای نوشته رو پیدا کردم اما ستون عکس رو نتونستم پیدا کنم میخواستم بدونم چطور میشه داخل این فایل اکسل ستون تصویرشاخص درست کنم که ادرس تصویر شاخص هم درج کنیم که تصویر هم وارد بشه .
سلام و احترام در بخش wp_mail_bank_logs چه اطلاعاتی موجود است
با تشکر
واقعا ممنونم. من سایت خودم رو میخواستم بخاطر یه سری مشکلات منتقل کنم اما نمی خواستم از کل دیتابیس بکاپ بگیرم. برا همین چند تا مورد مثل یوزر ها و پست ها رو اکسپورت گرفتم. اما وقتی پست شما رو از توی گوگل پیدا کردم، فهمیدم که متا ها هم مهمن و اونا رو یادم رفته بود. دمتون گرم مشکلمو حل کردید ??
خیلی عالی استفاده کردم درود بر شما