Attivare/disabilitare un plugin con creazione di tabelle in WordPress

Oggi vedremo come creare, attivare e disabilitare un plugin con una tabella associata. Iniziamo con alcuni dettagli necessari per WP prima di scrivere il codice vero e proprio. Iniziamo scrivendo il nome del plugin, la descrizione, l’autore, etc.. come segue

<?php
/*
Plugin Name:  Fattme
Description: Il mio plugin
Author: Fattme
Version: 1.0
Author URI: https://fattme.wordpress.com
Plugin URI: https://fattme.wordpress.com
*/

Effettuiamo un controllo per capire se esiste già una classe avente lo stesso nome della nostra:

if ( !class_exists(‘fattme’)) {

class fattme {

var $table_fattme = “fattme_table”;

function fattme() {

$this->plugin_name = plugin_basename(__FILE__);

// Init options & tables during activation & deregister init option
register_activation_hook( $this->plugin_name, array( &$this, ‘activate’ ) );
register_deactivation_hook( $this->plugin_name, array( &$this, ‘deactivate’ ) );

}

Controlliamo se non ci sono tabelle aventi lo stesso nome della tabella usata dal nostro plugin.

function activate() {

global $wpdb;

if( $wpdb->get_var( “SHOW TABLES LIKE ‘$this->table_fattme'”) != $this->table_fattme ) {

$sql = “CREATE TABLE IF NOT EXISTS ” . $this->table_fattme . ” (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
text VARCHAR(255) NULL,
date DATE NOT NULL,
PRIMARY KEY (id)
);”;

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

Quando disattiviamo il nostro plugin, possiamo decidere cosa fare.  Nel caso seguente la tabella viene droppata (con la perdita di tutti i dati), nessuno vi dice di lasciarla li dov’è senza dover perdere tutte le informazioni presenti in DB.

function deactivate() {

global $wpdb;

//Commento la riga segunete in modo da evitare di eliminare la tabella con la successiva perdita dei dati
$wpdb->query(“DROP TABLE IF EXISTS $this->table_fattme”);
}

}

global $fattme;
$fattme = new fattme();
}

?>

That’s all.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...