جداول قاعدة البيانات المخصصة في WordPress: الجزء الأول
نشرت: 2022-06-27في هذه السلسلة من المقالات ، سنلقي نظرة على كيفية إنشاء جداول قاعدة بيانات مخصصة في WordPress مع أو بدون مكون إضافي.
متى ولماذا يجب علي استخدام جداول قاعدة البيانات المخصصة؟
في معظم الحالات ، فإن جداول قاعدة بيانات WordPress الافتراضية التي يتم إنشاؤها عند تثبيت WordPress هي كل ما ستحتاج إليه في أي وقت. تحتوي هذه الجداول على جميع أنواع المعلومات مثل أنواع المنشورات وبيانات التعريف المرتبطة بها. إذن ، لماذا تحتاج إلى جدول قاعدة بيانات مخصص؟
تأتي هذه الأمور بمفردها عندما تعمل مع بيانات تقع خارج نطاق المعلومات العادية المستخدمة في WordPress. لذلك ، قد ترغب في وضع البيانات في جدول مخصص عند إنشاء مكون إضافي يحتاج إلى تخزين المعلومات في قاعدة بيانات. هذا هو السبب الذي يجعلك ترى أن المكونات الإضافية مثل WooCommerce لها جداولها المخصصة.
بصرف النظر عن كونها طريقة أكثر إتقانًا لتخزين المعلومات ، فإن استخدام جداول منفصلة يمكن أن يساعد في تعزيز الأداء لأن أي استعلامات مستخدمة لا تحتاج إلى البحث في صفوف وصفوف البيانات غير الضرورية. بدلاً من ذلك ، يمكن توجيههم إلى الجدول "الصحيح" حيث يمكنهم العثور على المعلومات المطلوبة بسرعة وكفاءة أكبر. يصبح هذا مهمًا جدًا عندما تبدأ جداول قاعدة البيانات في النمو.
إنشاء جدول قاعدة بيانات مخصص لـ WordPress
لنفترض أننا نريد إنشاء مكون إضافي بسيط سيساعدنا في تنظيم قائمة بالطلاب. في الواقع ، تعني مهمة بسيطة كهذه أننا لسنا بحاجة إلى استخدام الجداول المخصصة على الإطلاق. نوع المنشور المخصص من شأنه أن يؤدي المهمة على أكمل وجه.
ومع ذلك ، من أجل هذا المثال ، يعد هذا النوع من البيانات مثاليًا لإثبات النظرية الكامنة وراء الجداول المخصصة ، لذلك سنعمل معها. ملاحظة: سنفترض أنك تمتلك بعض المعرفة الأساسية بلغة PHP و mySQL.
ابدء
للبدء ، سننشئ جدول قاعدة بيانات "طالب" به أعمدة للاسم والعمر والبريد الإلكتروني ومعرف فريد. سنقوم بذلك عن طريق إنشاء مكون إضافي مخصص لإنجاز المهمة.
ملاحظة: إذا لم تكن بالفعل على دراية بكيفية إنشاء مكون إضافي مخصص ، فراجع دليلنا حول إنشاء مكون WordPress الإضافي المخصص الخاص بك قبل استئناف هذا البرنامج التعليمي!
قم بإنشاء ملفات البرنامج المساعد
سننشئ مجلدًا يسمى "my-custom-db -جدول" في مجلد الملحقات وداخله ، ملف باسم "my-custom-db-table.php" يحتوي على هذا الجزء من الكود:
<?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { // THE CODE } register_activation_hook(__FILE__, 'create_the_custom_table');
ما فعلناه هو تقديم معلومات المكون الإضافي حتى يتعرف WordPress على المكون الإضافي. من الواضح أنك ستحتاج أيضًا إلى وظيفة تضيف مخطط الجدول إلى قاعدة البيانات والتي ستكون وظيفة create_the_custom_table()
.
في معظم الحالات ، ما عليك سوى تشغيل هذه الوظيفة مرة واحدة ، ويفضل عند تنشيط المكون الإضافي. لذلك ، استخدمنا register_activation_hook () الذي يوفره WordPress للتأكد من تشغيل الوظيفة عند تنشيط المكون الإضافي.
تحديد هيكل الجدول
بالطبع ، لن يحدث شيء حتى الآن إذا قمنا بتنشيط المكون الإضافي ، حيث لا تزال الوظيفة فارغة. لذلك دعنا نذهب ونملأه بهذا الرمز ، من أجل إنشاء الجدول بالفعل:
<?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'students'; $sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(__FILE__, 'create_the_custom_table');
الآن دعنا نتوقف قليلاً لفحص ما فعلناه بهذا الجزء من الشفرة.
أولاً ، نحصل على بادئة الجدول باستخدام فئة $wpdb
WordPress العالمية التي تتواصل مع قاعدة البيانات. إنها نفس البادئة المحددة في wp-config.php
ومن الممارسات الجيدة استخدامها في جدولك المخصص أيضًا. سنرث أيضًا الترتيب الحالي بحفظه في المتغير $charset_collate
لاحقًا في الاستعلام.
خطوتنا التالية هي تحديد بنية الجدول في استعلام sql للحصول على المخطط الصحيح المطلوب. كما قلنا ، عمود المعرف والبريد الإلكتروني والاسم والعمر بالنوع الصحيح من البيانات لكل منها.
$sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;";
بعد ذلك ، upgrade.php
require_once
هذا أمر إلزامي لاستخدام وظيفة dbDelta
التي تأتي بعد ذلك مباشرة. عند استخدام WordPress ، من أجل إنشاء جدول قاعدة بيانات (أو تحديث الجداول الموجودة إلى بنية جديدة) ، نحتاج إلى استخدام وظيفة dbDelta.
ملاحظة: بدلاً من تنفيذ استعلام SQL مباشرةً ، تُستخدم هذه الوظيفة لتعديل قاعدة البيانات عن طريق إنشاء جدول أو تحديثه ، بناءً على عبارات SQL المحددة. باستخدام معلمة $queries
، يمكننا تمرير مخطط جدولنا المخصص.
الآن إذا قمت بتنشيط المكون الإضافي وفحصت قاعدة البيانات الخاصة بك ، فسترى أن الجدول قد تم إنشاؤه.
الآن ، إذا قرأت داخل ملف wp-admin/includes/upgrade.php
include / Upgrade.php ، فستلاحظ أن dbDelta()
يستخدم preg_match()
لاسترداد المعلومات من جملة SQL. لهذا السبب ، عليك توخي الحذر عند تحريره. توفر الوثائق الرسمية مزيدًا من المعلومات حول هذا الأمر ، لكننا أبرزنا النقاط الرئيسية أدناه:
- يجب عليك وضع كل حقل في السطر الخاص به في عبارة SQL الخاصة بك.
- يجب أن يكون لديك مسافتان بين الكلمات PRIMARY KEY وتعريف مفتاحك الأساسي.
- يجب عليك استخدام الكلمة الرئيسية KEY بدلاً من مرادفها INDEX ويجب عليك تضمين مفتاح واحد على الأقل .
- يجب أن يُتبع KEY بمسافة واحدة ، ثم اسم المفتاح ، ثم مسافة ، ثم افتح قوسًا مع اسم الحقل ، ثم قوس مغلق.
- يجب إعطاء اسم لمفاتيح المفاتيح الأخرى غير الأساسية. فمثلا:
... PRIMARY KEY (id), KEY age (age) ...
- يجب ألا تستخدم أي فواصل أو علامات خلفية حول أسماء الحقول.
- يجب أن تكون جميع أنواع الحقول بأحرف صغيرة .
- يجب أن تكون الكلمات الرئيسية في SQL ، مثل إنشاء جدول وتحديث ، بأحرف كبيرة .
- يجب تحديد طول جميع الحقول التي تقبل معلمة طول ، مثل int (11) لعمود id على سبيل المثال.
ربما لاحظت أيضًا أننا لم نتحقق مما إذا كان الجدول موجودًا بالفعل في قاعدة البيانات. هذا لأن dbDelta
يفعل ذلك من أجلنا. لا داعي للقلق بشأن استفسارات التحديث. لن يقوم فقط بإنشاء الجدول ، ولكنه سيتحقق مما إذا كان يوجد جدول يحمل نفس الاسم بالفعل ، وإذا كان الأمر كذلك ، فلن يقوم بإنشاء الجدول. سيتم فقط تحديث بنية الجدول الحالية إذا لزم الأمر.
سنغطي هذا أكثر في المقالات المستقبلية في هذه السلسلة.
وظائف وقابلية التوسع
إذن ، ما الذي يجب أن يحدث عندما يتم إلغاء تنشيط المكون الإضافي أو إلغاء تثبيته؟ من الناحية المثالية ، يجب أن يكون هناك خيار المسؤول لاختيار ما إذا كنت تريد حذف هذا الجدول أم لا من قاعدة البيانات إذا تم إلغاء تنشيط المكون الإضافي أو حذفه.
علاوة على ذلك ، من شبه المؤكد أنك ستجد عاجلاً أم آجلاً أنك بحاجة إلى تغيير المكون الإضافي الخاص بك (لتحسينه أو التخلص من الخطأ). ربما تريد تغيير طريقة تخزين البيانات أو إضافة أعمدة إلى الجدول أو تغيير تصميمه. هذا يعني أنه يجب عليك إنشاء المكون الإضافي بطريقة تضمن أنه قابل للتطوير قدر الإمكان ويمكنه التكيف مع أي تغييرات يتم إجراؤها.
في مقالاتنا التالية من هذه السلسلة ، سوف نتعمق في هذه الموضوعات ونوضح لك كيف يمكنك تحقيق ذلك. تأكد بعد قليل!