tschaki
WordPress Shortcode erstellen
Home » WordPress Datenbank Funktionen

WordPress Datenbank Funktionen

Erstellung, Select, Insert, Update und Delete Funktionen um diese in Wordpress Plugins oder Themes anzuwenden.

Tabellenerstellung in WordPress

Für Plugin oder Themes werden oftmals Datenbank Anbindungen benötigt um beispielsweise Einstellungen für APIs oder Sonstiges zu hinterlegen. Dann findest du den Code für die Erstellung einer neuen Tabelle in der Datenbank als erstes Beispiel. Wir verwenden hierfür ein Plugin. Die Verbindung wird über $wpdb mit den WordPress Datenbank Zugangsdaten hergestellt:

function create_plugin_database_tables( ) {
    global $wpdb, $table_prefix;
    require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
    $new_table = $table_prefix . "plugin_table_name";
    if( $wpdb->get_var( "show tables like '$new_table'" ) != $new_table )
    {
        $sql = "CREATE TABLE `" . $new_table . "` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `account_name` varchar(255) NOT NULL,
          `account_type` int(11) NOT NULL,
          `transfer_state` varchar(255) DEFAULT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
        dbDelta($sql);
    }
}
register_activation_hook( __FILE__, 'create_plugin_database_tables' );

Das Plugin erzeugt bei Aktivierung eine 4 Spalten Tabelle. Diese sieht dann so aus:


Name `wp_plugin_table_name`

`id` int(11)

`account_name` varchar(255)

`account_type` int(11)

`transfer_state` varchar(255)

In den nachfolgenden Beispielen wird diese Tabelle als Ausgangspunkt verwendet.

Optionen mit WordPress DB

WordPress DB (kurz $wpdb) bietet die gleiche Struktur an wie normales MySQL Script. Diese finden ebenfalls über $wpdb Verwendung in selber Komplexität. Standard Funktionen wie es SELECT, INSERT, UPDATE und DELETE sind behandeln wir zudem hier genauer.

WordPress Datenbank: SELECT

Die Ausgabe gibt also alle Accountnamen aus, welche die fiktive account_name 123aaa und account_type = 1 besitzen.

global $wpdb;
$session_id = "123aaa";
$dbquery = $wpdb->prepare( "SELECT * FROM ".$wpdb->prefix."plugin_table_name WHERE account_name = %s AND account_type = %d", $session_id, 1 );
$db_entries = $wpdb->get_results( $dbquery );
if(count( $db_entries ) != 0 ) {
	foreach( $db_entries as $src_entry ) {
    	$account_name = $src_entry->account_name;
      	return $account_name;
    }
}

Genau genommen passiert die ganze Magie auf Zeile 3.

Etwa in diesem Query werden %-Variablen verwendet. Folglich steht %s für String, eine Typenzuweisung als Platzhalter. %d steht für eine Dezimalzahl, ebenfalls ein Platzhalter. Die Werte für die Abfrage werden am Ende der prepare Funktion als Parameter angehängt.

WordPress Datenbank: INSERT

global $wpdb;
$wpdb->insert( $wpdb->prefix . "plugin_table_name", 
    array(
		"account_name" => "123aaa",
		"account_type" => 1,
		"transfer_state" => "transfered"
	)
);

Die erste Spalte id in unserem Tabellenbeispiel, verfügt über einen PRIMARY Key und der Option auto_increment. Dies sorgt dafür, dass selbständig die Zahl der Datensätze hochgezählt wird.

WordPress Datenbank: UPDATE

$wpdb->update( $wpdb->prefix . 'plugin_table_name',
	array(
		'account_name' => "124abb",
		'account_type' => 2,
		'transfer_state' => "finished",
	),
	array('account_type' => 1, 'transfer_state' => "tranfered"),
	array('%s', '%d', '%s'),
	array('%d', '%s')
);

Dann zur Erklärung: Die zwei letzteren Arrays beinhalten Typendefinierungen. Das Erste der beiden Letzten mit drei Elementen gibt an, welche Daten in der Tabelle updated wird, in diesem Beispiel %s -> String, %d -> Dezimalzahl, %s -> String. Das Letzte überprüft die Suchdaten (üblicherweise WHERE) auf Typ des account_type und transfer_state.

WordPress Datenbank: DELETE

global $wpdb;
$wpdb->delete($wpdb->prefix . 'plugin_table_name', array('account_typ' => 2));

Darum werden alle Datensätze welche account_typ = 2 besitzen unwiderruflich gelöscht.

Quelle: https://codex.wordpress.org/Database_Description

Trent Bojett

My name is Trent Bojett, I am 28 years old and I live in Switzerland. Because of my enthusiasm for writing and the logical world (= software development) I started this blog in early 2020.

Kommentieren