2016-07-06 9 views
2

プラグインを有効にした後に有効化メッセージを表示したいとします。WordPressプラグインを有効にした後でメッセージを表示

私はこれについてSO上のいくつかの質問を見てきましたが、「日のどれも正しく動作しません:ちょっと..作品

if (!get_option("startup")) { 
    echo "<div class='updated'><h3>Welcome to [name]</h3>"; 
    update_option('startup', 'true'); 
} 

を。それは<!DOCTYPE>の前であっても、HTMLを一番上に置きます。それを正しい場所に置く方法はありますか?だからボディのタグですか?

+0

あなたは正しい場所でそれを呼び出そうとしましたか? – SHR

答えて

3

ここで行う必要があることがいくつかあります。まず、register_activation_hook() functionを使用してプラグインのアクティブ化を行います。 admin_notices actionは、管理領域内に通知を追加するために使用されます(通知はどこにでも印刷できません)。

ただし、のプラグインの有効化にはadmin_noticesアクションを使用できないという追加の問題があります。これは、WordPressがあなたのプラグインを「生き生きとしている」わけではないからです。それはバックグラウンドでそれをアクティブにし、起動を完了する前に致命的なエラーを引き起こさないように出力を抑制します。

幸いにも、this blog postはこの問題の解決方法の概要を示しています。この投稿の作者は、transientsを使用してプラグインの '状態'を保存するよう提案しています。これにより、プラグインがアクティブになった後に取得できるようになります。

このブログはこのサイトのようなCC-BY-SAライセンスを持っているので、ここにコードをコピーしてそれが生きるようにします。私はこのポストの長さを保つためにそれを少し凝縮しましたが、完全な解決策のためにview the whole blog postにすることができます。私はこれをテストして、WordPress 4.5.3をインストールしても動作することを確認しています。

register_activation_hook(__FILE__, 'fx_admin_notice_example_activation_hook'); 

function fx_admin_notice_example_activation_hook() { 
    set_transient('fx-admin-notice-example', true, 5); 
} 

add_action('admin_notices', 'fx_admin_notice_example_notice'); 

function fx_admin_notice_example_notice(){ 

    /* Check transient, if available display notice */ 
    if(get_transient('fx-admin-notice-example')){ 
     ?> 
     <div class="updated notice is-dismissible"> 
      <p>Thank you for using this plugin! <strong>You are awesome</strong>.</p> 
     </div> 
     <?php 
     /* Delete transient, only display this notice once. */ 
     delete_transient('fx-admin-notice-example'); 
    } 
} 
0

'register_activation_hook($file, $function);'フックを使用すると、これを簡単に行うことができます。

function myplugin_activate() { 
    echo "<div class='updated'><h3>Welcome to [name]</h3>"; 
} 
register_activation_hook(__FILE__, 'myplugin_activate'); 
+0

これはこのようには動作しません - プラグインが予期しない出力を生成しました 'というエラーを生成し、メッセージを表示しません。あなたは 'admin_notices'フックも使う必要がありますが、それはプラグインのアクティベーションに取り組まないという複雑な問題があります。私は答えを追加します。 –

+1

ありがとうございました+あなたの答えを+1しました – Farkie

関連する問題