Krótko mówiąc, tak - $wpdb
klasa. Aby uzyskać więcej informacji, zobacz Kodeks .
Ilekroć wchodzisz w interakcję z niestandardową tabelą (lub dowolną tabelą, naprawdę) powinieneś przejść przez $wpdb
- w szczególności upewnij się, że znasz prepare
metodę, która może pomóc uniknąć zapytań i zapobiec wstrzyknięciom.
Powinieneś już być zaznajomiony, ponieważ powinieneś go używać do tworzenia tabeli. Na haku instalacyjnym powinieneś mieć coś takiego:
$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);
Ten kod jest faktycznie uruchamiany za każdym razem, gdy wtyczka jest aktywowana (tj. Nie tylko zainstalowana). Więc to będzie działać, gdy ktoś aktualizuje wtyczki automatycznie . Uwaga: jeśli uaktualnią się one ręcznie, zastępując wtyczkę - to nie zrobi tego - więc będziesz musiał uruchomić powyższy kod admin_init
podczas aktualizacji wtyczki (zapisz numer wersji w tabeli opcji, sprawdź w porównaniu z bieżącą wersją) .
Teraz normalnie nie chcesz, aby CREATE TABLE
polecenie SQL było uruchamiane za każdym razem, gdy aktualizujesz wtyczkę - tutaj się dBDelta()
pojawia.
Przed uruchomieniem powyższego polecenia - sprawdza, czy tabela istnieje. Co więcej, sprawdza typy kolumn. Więc jeśli tabela nie istnieje, tworzy ją, jeśli tak, ale niektóre typy kolumn zmieniły ją, aktualizuje je, a jeśli kolumna nie istnieje - dodaje ją.
Niestety - jeśli usuniesz kolumnę z powyższego, nie usunie ona automatycznie kolumny. Aby usunąć kolumny / tabele, musisz DROP
je dokładnie zaznaczyć (sprawdzając, czy istnieją przed tobą).