সংক্ষেপে, হ্যাঁ - $wpdb
ক্লাস। আরও তথ্যের জন্য কোডেক্স দেখুন ।
যখনই আপনি কোনও কাস্টম টেবিল (বা কোনও টেবিল, সত্যই) এর সাথে আপনার ইন্টারঅ্যাক্ট করা উচিত $wpdb
- বিশেষত নিশ্চিত হয়ে নিন যে আপনি সেই prepare
পদ্ধতির সাথে পরিচিত যা কোয়েরিগুলি থেকে বাঁচতে এবং ইঞ্জেকশনগুলি রোধ করতে সহায়তা করতে পারে।
আপনি টেবিল তৈরি করতে এটি ব্যবহার করা উচিত হিসাবে আপনি ইতিমধ্যে পরিচিত হওয়া উচিত। আপনার ইনস্টল হুক এ আপনার এমন কিছু হওয়া উচিত:
$charset_collate = '';
if ( ! empty($wpdb->charset) )
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty($wpdb->collate) )
$charset_collate .= " COLLATE $wpdb->collate";
//Create custom table
$sql_custom_table ="CREATE TABLE {$wpdb->prefix}my_table (
id bigint(20) unsigned NOT NULL auto_increment,
column_a varchar(255) default NULL,
column_b varchar(255) default NULL,
PRIMARY KEY (id)
) $charset_collate; ";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql_custom_table);
এই কোডটি আসলে যখনই প্লাগ-ইন সক্রিয় হয় (যেমন কেবল ইনস্টল করা হয় না) চালিত হয়। সুতরাং কেউ স্বয়ংক্রিয়ভাবে প্লাগ-ইন আপডেট করলে এটি চলবে । দ্রষ্টব্য: যদি তারা ম্যানুয়ালি প্লাগ-ইন প্রতিস্থাপনের মাধ্যমে আপগ্রেড করে - তবে তা হবে না - সুতরাং admin_init
আপনার প্লাগ-ইন আপগ্রেড হওয়ার সময় আপনাকে উপরের কোডটি ট্রিগার করতে হবে (বিকল্প সারণীতে সংস্করণ নম্বর সংরক্ষণ করুন, বর্তমান সংস্করণের বিপরীতে পরীক্ষা করুন) ।
এখন আপনি সাধারণত চাইবেন না যে CREATE TABLE
আপনি যখনই প্লাগ-ইন আপডেট করবেন তখন এসকিউএল কমান্ডটি চলমান থাকে - এটি এখানে dBDelta()
আসে।
উপরের কমান্ডটি চালানোর আগে - এটি সারণী উপস্থিত আছে কিনা তা পরীক্ষা করে দেখায়। আরও কী, এটি কলামের প্রকারগুলি পরীক্ষা করে। সুতরাং যদি টেবিলটি বিদ্যমান না থাকে তবে এটি তৈরি করে, যদি তা করে তবে কিছু কলামের ধরণের পরিবর্তন করে এটি আপডেট করে এবং যদি কোনও কলাম উপস্থিত না থাকে - এটি এতে যুক্ত করে it
দুর্ভাগ্যক্রমে - আপনি যদি উপরে থেকে কোনও কলাম সরিয়ে ফেলেন তবে এটি স্বয়ংক্রিয়ভাবে কলামটি সরিয়ে ফেলবে না। কলামগুলি / সারণীগুলি সরাতে আপনাকে DROP
সেগুলি নির্দিষ্টভাবে করা দরকার ( এটি করার আগে সেগুলি উপস্থিত রয়েছে কিনা তা পরীক্ষা করা)।