¿Es posible envolver el código en una función especial que solo se ejecuta la primera vez que se activa el complemento?
Tengo un código de base de datos que necesito ejecutar en la activación del complemento, pero el código no necesita ejecutarse nuevamente después de eso.
Sí, esto es posible. Puede registrar un enlace de activación de complemento que solo se ejecuta cuando se activa el complemento. Busqué un complemento antiguo que escribí para un código de ejemplo:
class MyPlugin
{
//constructor for MyPlugin object
function MyPlugin() {
register_activation_hook(__FILE__,array(&$this, 'activate'));
}
function activate()
{
//initialize some stored plugin stuff
if (get_option('myplugin_data_1') == '') {
update_option('myplugin_data_1',array());
}
update_option('myplugin_activated',time());
//etc
}
}
-
Gracias Zombat, y sobre todo por el ejemplo. Una pregunta: ¿Es posible tener un complemento que funcione (con un código que se ejecuta mientras el complemento esté activado) que también tenga un gancho de activación?
– Scott B.
22 de abril de 2010 a las 20:07
-
No estoy muy seguro de seguir. Todo lo que esté dentro de la función que registre como enlace de activación se ejecutará cada vez que se produzca la acción “activar complemento” en el panel de administración de wordpress. Puede tener un montón de otros códigos dentro de las clases de complementos que harán otras cosas, pero no dependerán de los ganchos de activación. Solo se puede usar normalmente. Disculpe si eso no responde a su pregunta, no entendí muy bien lo que está preguntando…
– zombi
22 de abril de 2010 a las 20:13
-
Me lo imaginé. Estaba confundido acerca de dónde colocar el init para el complemento y dónde colocar el gancho de activación.
– Scott B.
22 de abril de 2010 a las 20:25
http://codex.wordpress.org/Function_Reference/register_activation_hook
La función register_activation_hook (introducida en WordPress 2.0) registra una función de complemento que se ejecutará cuando se active el complemento.
-
Gracias Dominic. Agradezco la ayuda.
– Scott B.
22 de abril de 2010 a las 20:07
recuerde también que una vez que usted mismo/usuario desactive su complemento, puede eliminar cualquier opción de tablas que haya almacenado en la base de datos de wp, recientemente escribí una pequeña publicación sobre esto hablando sobre la función wp register_deactivation_hook().
http://www.martin-gardner.co.uk/how-to-get-your-wordpress-plugin-to-drop-table-from-the-database/
<?php
register_deactivation_hook( __FILE__, ‘pluginUninstall’ );
function pluginUninstall() {
global $wpdb;
$thetable = $wpdb->prefix."your_table_name";
//Delete any options that's stored also?
//delete_option('wp_yourplugin_version');
$wpdb->query("DROP TABLE IF EXISTS $thetable");
}
?>