Salut, je bosse toujours sur mon plugin très littéraire de gestion de bibliothèque (ou plutôt d’avis) et je cale sur un truc tout bête : comment ajouter des tables à la chose ?
Pour l’instant, dans mon code, j’ai le bout de magie noire suivant :
function ndxbm_list_tables() {
global $wpdb;
$bm_tables = array(
NDX_BM_BOOKS => false,
NDX_BM_PERSONS => false,
NDX_BM_ROLES => false,
NDX_BM_CYCLES => false,
NDX_BM_TOMES => false);
// checks if the tables exist or not (massively inspired by the list plugin)
// $wpdb est NULL ?
$tables = $wpdb->get_results(« show tables; »);
foreach($tables as $table_name) {
if(array_key_exists($table_name, $bm_tables)) {
$bm_tables[$table_name]=true;
}
}
return $bm_tables;
}
qui vérifie si les tables dont nes noms sont donnés existent déja. Pour l’exemple, on va s’intéresser à NDX_BM_BOOKS (dont le vrai nom est « wp_ndx_books »). Si elle n’exisste pas, j’appelle cet autre bout de code
ndxbm_update(
« CREATE TABLE » . NDX_BM_BOOKS . » (
isbn TEXT NOT NULL ,
title TEXT NOT NULL ,
book_url TEXT NOT NULL ,
image_url TEXT NOT NULL ,
editor TEXT NOT NULL ,
collection TEXT NOT NULL ,
date TEXT NOT NULL ,
PRIMARY KEY ( isbn ),
); »
);
avec la méthode suivante
function ndxbm_update($request) {
require_once(ABSPATH . ‘wp-admin/upgrade-functions.php’);
ndx_bm_local_mail(« ugrading », $request. »nn ».var_export(dbDelta($request), true));
}
J’ai trouvé l’appel à dbDelta dans la doc de WordPress : http://codex.wordpress.org/Creating_Tables_with_Plugins.
Mais ça ne marche pas. Pire encore, rien ne semble se passer. Y aurait-il un truc que j’ignore ?