تعداد بازدید: 118

پایگاه داده وردپرس

در این مقاله قصد داریم تا پایگاه داده وردپرس ۴.۴ رو بررسی کنیم. پایگاه داده این نسخه از وردپرس تا mysql نسخه 5.0.15 و تمامی ورژن های MariaDB استفاده می کنه.

وردپرس در حالت استاندارد دارای ۱۲ جدول هست که دیاگرام اون رو به همراه رابطه بین جداول در زیر مشاهده می فرمایید. هر جدول در وردپرس شامل تعدادی ستون هست که برخی از اون ها در هسته وردپرس استفاده نمیشه و برای توسعه دهندگان پلاگین های وردپرس تعبیه شده(مثل term_group در جدول wp_terms).

 

 

پایگاه داده وردپرس

WP_POSTS

فیلد نوع توضیحات
ID bigint(20) unsigned
post_author bigint(20) unsigned این فیلد شناسه نویسنده رو در خودش نگه می داره(کلید خارجی به جدول wp_users)
post_date datetime تاریخ انتشار پست (براساس timezone که شما در اون قرار دارید)
post_date_gmt datetime زمان انتشار پست به گرینویچ (Greenwich Mean Time). که یک مورد بین المللی هست.
post_content longtext محتوای پست . (همان محتوایی که در ویرایشگر وارد می کنید).
post_title text تیتر پست (در بالای محتوا)
post_excerpt text چکیده پست ها (فیلدی جداگانه در زمان انتشار پست وجود دارد که آن را وارد می کنیم)
post_status varchar(20) وضعیت پست که شامل منتشر شده ، پیش نویس ، برای بازبینی ، زباله دان و … می شود.
comment_status varchar(20) وضعیت دیدگاه ها که می تونه باز یا بسته باشه.
ping_status varchar(20) این که pingback در پست فعال یا غیر فعال باشه (open , close).
post_password varchar(20) اگر برای پست پسورد گذاشته باشید در این جا قرار میگیره.
post_name varchar(200) نامک یا قسمتی از لینک که از طرف نویسنده قابل تعیین باشه. (برای لینک ها در حالت تمیز)
to_ping text لیستی از url هایی که وردپرس باید برای آن ها pingback بفرسته
pinged text لیستی از url هایی که pingback برای اون ها فرستاده شده.
post_modified datetime زمان آخرین تغییر پست (براساس timezone محلی شما)
post_modified_gmt datetime زمان آخرین تغییر پست (براساس timezone بین المللی گرینویچ)
post_content_filtered longtext این فیلد توسط برخی پلاگین ها زمانی که فیلتری روی the_content اجرا می کنند استفاده می شه (در هسته وردپرس استفاده نمیشه)
post_parent bigint(20) unsigned برای ارتباط پست ها با یکدیگر
guid varchar(20) یک شناسه منحصر به فرد برای هر پست که لینک دسترسی به پست رو مشخص می کنه.
menu_order int(11) ترتیب قرارگیری که از ویژگی های برگه هست .
post_type varchar(20) نوع پست
post_mime_type varchar(100) تنها برای نوع پست Attachment و بیانگر نوع فایل هست.
comment_count bigint(20) تعداد دیدگاه ثبت شده برای پست

تفاوت زمان معمولی و زمان GMT

در این جدول با مفهوم gmt که مخفف (Greenwich Mean Time) هست آشنا می شیم . ما یک زمان محلی داریم که براساس time zone تعیین میشه و یه زمان ثابت که گرینویچ هست.

post_status ها در وردپرس:

  • Publish :‌ منتشر شده.
  • Future : زمان انتشار پست رو به صورت دستی برای آینده ثبت کرده باشید این وضعیت در پایگاه داده ثبت میشه.
  • Draft : پیش نویس . که تنها کاربران با سطح دسترسی های خاص می تونن پست رو ببینند.
  • Pending : پست در انتظار انتشار (منتظر کاربری که capability یا سطح دسترسی publish_posts داشته باشه تا پست رو منتشر کنه).
  • Private :‌ پست خصوصی که تنها در پنل ادمین مشاهده میشه. (قابل مشاهده برای role ها یا نقش های Administrator و Editor و Author ) که میتونید programmically تولیدش کنید یا اینکه از باکس سمت چپ بالا قسمت نمایانی به صورت خصوصی متنشر کنید .
  • Trash :‌ پست های داخل زباله دان.
  • Auto-Draft :‌ زمانی که شما در حال نوشتن در ویرایشگر هستید وردپرس به صورت اوتوماتیک نوشته شما رو ذخیره می کنه که پست در این حالت به Auto-Draft در میاد.

pingback در وردپرس

این مورد که یک قابلیت برای وبلاگ هاست یعنی اگر کسی در وب سایتی به پست شما لینک کرد به شما اطلاع داده بشه. از قسمت تنظیمات صفحه در بالا می تونید فرستادن بازتاب رو فعال کنید.

post_parent

ارتباط پست ها با یکدیگر :‌ به طور مثال برای زمانی که ساختار سلسله مراتبی (hierarchical) برای پست تایپ ها برقرار باشه ، یا به عبارتی خاصیت والد و فرزندی برای پست ها باشه.

مورد بعدی برای لینک کردن یک attachment به یک پست.

guid

این یک شناسه منحصر به فرد برای هر پست هست که برای برخی پست ها لینک دسترسی رو مشخص می کنه و اگر پست تایپ برابر Attachment باشه برابر با لینک فایل هست. دقت داشته باشید که با permalink متفاوت است.

WP_POSTMETA

دربردارنده اطلاعات اضافی برای پست ها . meta table ها در وردپرس یک تکنیک برای ذخیره بی نهایت data برای هر پست هست به طوری که با برقراری رابطه یک به چند میشه برای هر پست چندین متا ذخیره کرد به جای اینکه در جدول wp_posts ستون ذخیره کنیم.(رابطه یک به چند ، یک دیدگاه چند متا)

فیلد نوع توضیحات
meta_id bigint(20) unsigned
post_id bigint(20) unsigned کلید خارجی متصل به ستون ID از جدول wp_posts
meta_key varchar(255)
meta_value longtext

WP_USERS

فیلد نوع توضیحات
ID bigint(20) unsigned
user_login varchar(60) نام کاربری یا username
user_pass varchar(64) گذر واژه
user_nicename varchar(50) لقب
user_email varchar(100) ایمیل کاربر
user_url varchar(100) وب سایت کاربر
user_registered datetime زمان ثبت نام کاربر
user_activation_key varchar(60) کلید فعال سازی که برای بازیابی رمز عبور کاربر استفاده می شود.
user_status int(11) وضعیت کاربر که
display_name varchar(250) نام قابل نمایش که میتونه مقادیر username , user_nicname از جدول wp_user و مقادیر firstname , last name رو از جدول wp_usermeta بگیره.

WP_USERMETA

اطلاعات متای مربوط به جدول کاربران نظیر نام و نام خانوادگی یا اطلاعات حساب کاربری در ووکامرس در جدول usermeta ذخیره می شود.

فیلد نوع توضیحات
umeta_id bigint(20) unsigned
user_id bigint(20) unsigned کلید خارجی متصل به ستون ID از جدول wp_users
meta_key varchar(255)
meta_value longtext

WP_COMMENTS

فیلد نوع توضیحات
comment_ID bigint(20) unsigned
comment_post_ID bigint(20) unsigned کلید خارجی متصل به ستون ID از جدول wp_posts
comment_author tinytext نویسنده دیدگاه
comment_author_email varchar(100) ایمیل نویسنده دیدگاه
comment_author_url varchar(200) وب سایت نویسنده دیدگاه
comment_author_IP varchar(100) IP آدرس نویسنده دیدگاه
comment_date datetime زمان انتشار دیدگاه به وقت محلی وب سایت
comment_date_gmt datetime زمان انتشار دیدگاه به وقت گرینویچ
comment_content text متن دیدگاه
comment_karma int(11) یک مقدار عددی برای مدیریت بهتر دیدگاه ها در وردپرس قابل استفاده برای پلاگین ها
comment_approved varchar(20) وضعیت دیدگاه (پذیرفتن ، نپذیرفتن ، جفنگ ، زباله دان)
comment_agent varchar(255) اطلاعات کامل عاملی که دیدگاه رو فرستاده . مرورگر(اطلاعات کامل) – سیستم عامل
comment_type varchar(20) نوع دیدگاه (pingback یا trackback) ۰ در صورتی که خالی باشه به معنی چیزی غیر از موارد قبل
comment_parent bigint(20) unsigned رابطه میان دیدگاه ها (پاسخ دیدگاه ها). رابطه والد و فرزندی
user_id bigint(20) unsigned شماره ID کاربر ارسال کننده دیدگاه (برای کاربران مهمان مقدار 0 ثبت میشه)

comment_author

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

نکته :‌ comment_author و comment_url و comment_email در صورتی که کاربر لاگین باشد از اطلاعات حساب کاربری وی برداشته می شود در غیر اینصورت می تواند توسط فرم موجود این اطلاعات را وارد کند.(تمامی اطلاعات در پنل ادمین دیدگاه ها قابل ویرایش است).

comment_karma

این ستون توسط هسته اصلی وردپرس استفاده نمی شود و برای پلاگین ها قرار داده شده است.

comment_approved

  • پذیرفتن = 1
  • نپذیرفتن = 0
  • جفنگ = spam
  • زباله دان = trash

WP_COMMENTMETA

ثبت اطلاعات اضافی در رابطه هر دیدگاه (رابطه یک به چند ، یک دیدگاه چند متا)

فیلد نوع توضیحات
meta_id bigint(20) unsigned
comment_id bigint(20) unsigned کلید خارجی متصل به ستون comment_ID از جدول wp_comments
meta_key varchar(255)
meta_value longtext

WP_TERMS

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

فیلد نوع توضیحات
term_id bigint(20) unsigned
name varchar(200) نام term
slug varchar(200) slug یا نامک term
term_group bigint(10) این فیلد این قابلیت رو به نویسنده های پلاگین میده تا term های مختلف رو در یک گروه بیارن (در هسته استفاده خاصی نداره)

WP_TERMMETA

فیلد نوع توضیحات
meta_id bigint(20) unsigned
term_id bigint(20) unsigned کلید خارجی متصل به ستون term_id از جدول wp_terms
meta_key varchar(255)
meta_value longtext

WP_TERM_TAXONOMY

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

هر term تنها به یک taxonomy تعلق داره.

فیلد نوع توضیحات
term_taxonomy_id bigint(20) unsigned
term_id bigint(20) unsigned کلید خارجی متصل به ستون term_id از جدول wp_terms
taxonomy varchar(32) نام taxonomy مربوط به term
description longtext توضیح مربوط به term

WP_TERM_RELATIONSHIPS

برای روابط چند به چند در پایگاه داده (many to many) از یک جدول واسط استفاده می کنیم. حال ما یک پست رو به چند term و یک term رو به چند پست می خواهیم لینک کنیم. post term

جدول wp_term_relationships رابطه های میان پست ها و term هارو از طریق جداول term_taxonomy و wp_posts برقرار می کنه .

خطوط قرمز رو از جدول wp_terms → wp_term_taxonomy → wp_term_ralationships → wp_pots

فیلد نوع توضیحات
object_id bigint(20) unsigned کلید خارجی متصل به ستون ID از جدول wp_posts
term_taxonomy_id bigint(20) unsigned کلید خارجی متصل به ستون term_taxonomy_id از جدول wp_term_relationships
term_order int(11) اجازه مرتب سازی term ها رو بر اساس objec ها میده (کم استفاده)(جهت استفاده در پلاگین)

محل ذخیره taxonomy ها

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

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

زمانی که شما یک تکسونومی اضافه می کنید در واقع اون رو به متغیر سراسری $wp_taxonomies اضافه می کنید. پس این کد شماست که تکسونومی شما رو ذخیره می کنه و زمانی که شما کدتون رو بردارید دیگه تکسونومی برای شما وجود نداره درحالی که term ها مرتبط با taxonomy حذف شده در پایگاه داده وجود دارند.

این صحبت در رابطه با پست تایپ ها هم صدق می کنه.

WP_OPTIONS

جدولی برای ذخیره تنظیمات سایت شامل اطلاعاتی نظیر پوسته ، پلاگین های فعال (active_plugins) ، پلاگین های لغو نصب (uninstall_plugins) اطلاعات موقتی ، شناسه پست های استیکی(sticky_posts) ، ساختار rule جاری(permalink_structure) ، rewrite_rule های موجود (rewrite_rules) و همچنین تنظیمات مضاف پلاگین ها و پوسته های جدید.

فیلد نوع توضیحات
option_id bigint(20) unsigned
option_name varchar(64)
option_value longtext
autoload varchar(20) این یک کلید هست که می تونید برای برخی آپشن ها بزارید و با تابع wp_load_alloptions() اون ها رو بگیرید

تشریح برخی موارد جدول WP_OPTIONS

widget : نام ستون که از قالب widget_{widgetID} استفاده می کند و مقدار آن یک آرایه که شامل مقادیر ورودی ثبت شده برای هر ویدجت است. به طور مثال ویدجت آخرین دیدگاه ها به شکل زیر است :

option_name :

option_value :

 

مطالب مشابه

آموزش نکات و تکنیک های برنامه نویسی وردپرس

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

چون وردپرس یک سیستم متن باز است لذا کدهای آن و ساختار پایگاه داده آن برای تمامی افراد قابل دسترس است . به همین منظور...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Hooks: Actions and Filters

هیچ وقت هسته وردپرس رو تغییر ندید (do'nt touch the core) . بدین معنی هست که برای هک وردپرس راه دیگری غیر از تغییر...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Ajax در وردپرس

ajax یک درخواست به سرور (request) و دریافت پاسخ (Response) بدون refresh صفحه از طریق شی xmlHttpRequest است. Request...

اشتراک گذاری :

ابوالفضل صباغ

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای پایگاه داده وردپرس

پاسخ دهید

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