Creare una tabella nel db quando si attiva il plugin in WordPress

In questo articolo vediamo un semplice esempio che mostra come viene creata una tabella personalizzata nel database quando il plugin che abbiamo sviluppato viene attivato.

Per questo scopo abbiamo bisogno di register_activation_hook , un gancio  di wordpress che manda in esecuzione una nostra funzione  quando il plugin viene attivato e alla quale passiamo due parametri:

<?php register_activation_hook( $file, $function ); ?>

Il primo è la posizione del file principale del plugin mentre il secondo è appunto la funzione che include il codice che vogliamo eseguire.

In questo esempio lo scopo è quello di creare una tabella “Utenti” all’attivazione del plugin controllando preventivamente che essa sia già presente nel database:

<?php
//chiama la funzione all'attivazione del plugin
register_activation_hook(__FILE__,'edin_create_plugin_table');

function edin_create_plugin_table() {
global $wpdb;
$tablename = $wpdb->prefix . 'tablename';

// controllo se la tabella essite o meno nel db
if($wpdb->get_var("show tables like '$tablename'") != $tablename)
{
$sql = "CREATE TABLE $tablename (
id int(5) NOT NULL AUTO_INCREMENT,
username varchar(30) NOT NULL,
password varchar(32) NOT NULL,
email varchar(50) NOT NULL,
UNIQUE KEY id (id)
);";

require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
}

?>

Come si vede nel codice, tramite il metodo get_var() della classe WPDB controlliamo con una query la presenza della nostra tabella all’interno del database e quindi se non è presente utilizzamo la funzione dbDelta() per crearla.

Usiamo questa porzione di codice all’interno del file principale del plugin e come possiamo notare dal codice, passiamo  a register_activation_hook  direttamente la costante __FILE__.

Lascia un commento