2010-04-22 9 views

risposta

9

Sì, questo è possibile. Puoi registrare un hook di attivazione del plugin che viene eseguito solo quando il plugin viene attivato. Ho ripescato un vecchio plug-in che ho scritto per un po 'di codice di esempio:

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

Grazie Zombat, e soprattutto per l'esempio. Una domanda: è possibile avere un plugin funzionante (con codice che viene eseguito fino a quando il plugin è attivato) che ha anche un hook di attivazione? –

+0

Non sono sicuro di seguire. Qualsiasi cosa all'interno della funzione che si registra come hook di attivazione verrà eseguita ogni volta che l'azione "attiva il plugin" si verifica nel pannello di amministrazione di wordpress. Puoi avere un mucchio di altro codice all'interno delle classi del plugin che farà altre cose, ma non fare affidamento sui ganci di attivazione. Può essere usato normalmente. Scusa se questo non risponde alla tua domanda, non ho capito bene cosa stai chiedendo ...? – zombat

+0

L'ho capito. Ero confuso su dove mettere l'init per il plugin e dove mettere il gancio di attivazione. –

1

ricordare anche una volta che il plugin è in fase di disattivazione da soli/utente è possibile rimuovere tutte le opzioni tavoli che sono stati memorizzati nel database wp, ho scritto un piccolo post su questo di recente parlando della funzione di 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"); 
    } 
    ?> 
Problemi correlati