2010-04-22 18 views

Respuesta

9

Sí, esto es posible. Puede registrar un enganche de activación de complemento que solo se ejecuta cuando el complemento se activa. Me dragado hasta un plugin antiguo que escribí hace algún ejemplo de código:

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 
    } 
} 
+0

Gracias Zombat, y especialmente por el ejemplo. Una pregunta: ¿es posible tener un complemento funcional (con código que se ejecute siempre que el complemento esté activado) que también tenga un enlace de activación? –

+0

No estoy seguro de seguir. Cualquier cosa dentro de la función que registra como un gancho de activación se ejecutará cada vez que se produzca la acción "activar el complemento" en el panel de administración de WordPress. Puede tener un montón de otro código dentro de las clases de complementos que hará otras cosas, pero no dependerá de los ganchos de activación. Solo se puede usar normalmente. Perdón si eso no responde tu pregunta, ¿no entendí exactamente lo que estás preguntando ...? – zombat

+0

Lo descubrí. Estaba confundido acerca de dónde colocar el init para el complemento y dónde colocar el gancho de activación. –

1

recordar también una vez que su plug-in está siendo desactivado por sí mismo/el usuario puede eliminar cualquier opción de mesas que haya almacenado en la base de datos wp, escribí una pequeño post sobre esto recientemente hablando de 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"); 
    } 
    ?> 
Cuestiones relacionadas