Hay varias cosas que desearíamos hacer cuando el plugin es instalado, la que más rápido querremos descubrir es a mi parecer, como crear las tablas necesarias para nuestro plugin y aprender como interactuar con la base de datos.
Para crear una tabla para durante la activación de nuestro plugin vamos a agregar una nueva función, como sigue:
function i8b_untitled_install() {
global $wpdb;
$tableUntitled = $wpdb->prefix."im8bit_untitled";
$structure = "CREATE TABLE $tableUntitled (
`i8d_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`i8d_date` DATETIME NOT NULL,
`i8d_text` VARCHAR(2048) NOT NULL,
PRIMARY KEY (`i8d_id`)
)";
$wpdb->query($structure);
}
Informamos a php que utilizaremos la variable global $wpdb y listo.
Nota: Si por alguna razón teclearan mal $wpdb obtendrán unos errores increíblemente crípticos y podrían pasar mucho tiempo tratando de encontrarlo… err… me dijeron.
Fuera del cuerpo de cualquier función debemos teclear:
register_activation_hook(__FILE__, ‘i8b_untitled_install’);
Que recibe como parámetro la ruta a nuestro archivo donde se encuentra la función de instalación (en nuestro caso el mismo archivo) y el nombre de la función.
Ahora, cuando activemos nuestro plugin la tabla wp_im8bit_untitled será creada, el wp ha resultado del llamado a la función $wpdb->prefix que deberíamos utilizar siempre como prefijo para nuestras tablas para mantener el estándar con el resto de las tablas de wordpress.
Una vez creada la tabla podemos cambiar la función que dibuja el widget a algo como lo siguiente:
function i8b_untitled_widget($args) {
global $wpdb;
extract($args);
echo $before_widget;
echo $before_title;
echo "Title";
echo $after_title;
$tableUntitled = $wpdb->prefix."im8bit_untitled";
$untitled_row = $wpdb->get_row("select i8d_text from " .
" $tableUntitled order by rand() limit 1", ARRAY_N);
echo $untitled_row[0];
echo $after_widget;
}
Por supuesto no hay datos en nuestra tabla, así que ahora en lugar de ver el texto “Untitled” ahora no veremos nada hasta que insertemos algun dato. Estamos entonces realizando un query manual y trayendo un “tip del dia” aleatorio y exhibiendolo con los las lineas:
$tableUntitled = $wpdb->prefix."im8bit_untitled";
$untitled_row = $wpdb->get_row("select i8d_text " .
" from $tableUntitled order by rand() limit 1", ARRAY_N);
echo $untitled_row[0];
Construyendo como siempre el nombre de nuestra tabla ayudándonos con la función $wpdb->prefix pues esta puede cambiar de instalación a instalación de wordpress.
No debemos olvidar nuevamente indicar a php que $wpdb es una variable global.

Post a Comment