Mostra uma mensagem de confirmação antes da ativação do plug-in

4

Eu quero exibir uma mensagem quando o usuário tentar ativar meu plug-in. Esta mensagem perguntará se ele realmente quer ativar o plugin ou, se ele mudar de idéia, cancelar a ativação. Como posso conseguir isso? Este é o código da mensagem de aviso apenas para referência.

--- CÓDIGO ATUALIZADO ---

register_activation_hook( __FILE__, 'on_activation' );

function on_activation() {
   // Add the admin notice:
   add_action( 'admin_notices', 'on_activation_note' );

   // Then you should check the DB option: 
   $plugins = get_option( 'active_plugins' );

   // Do all the checks from the confirmation message
   if ( !in_array(__FILE__, $plugins) ) {
   unset( $plugins[ dirname( __FILE__ ) ] );
   update_option( 'active_plugins', $plugins );
   }
}

function on_activation_note() {
global $pagenow;
if ( $pagenow == 'plugins.php' ) {
    ob_start(); ?>
    <div id="message" class="error">
    <p><strong>Aviso</strong></br>
    Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
    <p><span><a class="button" href="">Cancelar</a></span>
    <span><a class="button" href="">Continuar</a></span></p>
    </div>
    <?php
    echo ob_get_clean();
    }
} 
    
por Daniel 15.09.2012 / 01:19

2 respostas

3

Você pode ler mais sobre os detalhes de ativação nesta resposta .

Basicamente, você precisa ligar uma função a register_activation_hook() - presumindo que isso seja de sua pasta de plug-ins principal e não é uma subpasta:

register_activation_hook( __FILE__, 'on_activation' );
function wpse65190_on_activation()
{
   // Add an admin notice:
   add_action( 'admin_notices', 'wpse65190_on_activation_note' );

   // Then you should check the DB option: 
   $plugins = get_option( 'active_plugins' );

   if ( ! in_array( dirname( __FILE__ ), $plugins )
   {
       unset( $plugins[ dirname( __FILE__ ) ] );
       update_option( 'active_plugins', $plugins );
   }
}
function wpse65190_on_activation_note()
{
    // Add your note here: Maybe a form?
}

É tão fácil quanto isso. Você só tem que preencher as lacunas. Se você recebeu um exemplo completo de trabalho, atualize esta resposta com seu código de trabalho. Obrigado.

    
por kaiser 15.09.2012 / 11:52
1

Você precisa criar duas distinções ativadas e ativadas . Você TEM QUE ter seu plugin ativado AKA incluído para o WP saber qual lógica processar. Mesmo que o plugin esteja ativado, você ainda pode desativar a funcionalidade e alertar o usuário que o plugin está ativado , mas ainda não ativado .

Existem vários plugins que usam uma etapa secundária de ativação. Você pode dar uma olhada em Private WP e All-In-One SEO Pack para ver como eles fazem isso.

Veja como eu abordaria isso:

  1. Defina um aviso de administrador assim que o plug-in for ativado, alertando o usuário de que ele precisa para ativar a funcionalidade primeiro.
  2. Se uma determinada string de consulta for definida, adicione uma opção que anote a opção de ativar a funcionalidade (por exemplo, update_option() ). Você pode querer criar uma página de configurações com um menu suspenso de seleção que mostre seu estado de ativação.
  3. Verifique essa opção usando get_option() para desativar o aviso de administração e continuar processando seu código.
por Brian Fegter 15.09.2012 / 05:22