web-dev-qa-db-ja.com

プラグインのアクティブ化前に確認メッセージを表示する

ユーザーが自分のプラグインをアクティブにしようとしたときにメッセージを表示したいのですが。このメッセージは、彼が本当にプラグインをアクティベートしたいのか、彼が気が変わったらアクティベートをキャンセルするのかを尋ねます。どうすればそれを達成できますか。これは、参考のための警告メッセージのコードです。

---更新コード---

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();
    }
} 
4
Daniel

アクティベーションの詳細については、この回答でもっと読むことができます

基本的にあなたは register_activation_hook() - に関数をフックする必要があります、これはあなたのメインのプラグインフォルダーの中から来て、サブフォルダーからではないと仮定します:

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?
}

それはそれと同じくらい簡単です。あなたはただギャップを埋める必要があります。あなたが完全な実用的な例を手に入れたならば、あなたの実用的なコードでこの答えを更新してください。ありがとう。

3
kaiser

activated enabled の2つの区別を作成する必要があります。あなたはHAVE TOあなたのプラグインがどのロジックを処理すべきかを知るためにWPのために含まれているAKAを有効にしています。プラグインが有効になっていても、機能を無効にしてプラグインが activated であることをユーザーに警告することはできますが、まだ enabled にはできません。

二次的な有効化手順を使用するプラグインがいくつかあります。 Private WP および All-In-One SEO Pack を見れば、これらがどのように達成されているかがわかります。

これが私がそれに取り組む方法です:

  1. プラグインがアクティブになったら、最初に機能を有効にする必要があることをユーザーに警告する管理通知を設定します。
  2. 特定のクエリ文字列が設定されている場合は、それらが選択したことを示すオプションを enable 機能(つまりupdate_option())に追加します。有効状態を示す選択ドロップダウンを持つ設定ページを作成することをお勧めします。
  3. 管理通知を無効にしてコードの処理を続けるには、get_option()を使用してそのオプションを確認します。
1
Brian Fegter