テストプラグインをアクティブ化したときに、管理パネルに通知を表示しようとしています。
どうすれば表示できますか?その方法は何ですか?
プラグインのアクティベーションの場合、リダイレクトがあるため、「admin_notices」フックを直接使用することはできません。回避策は、通知をオプションテーブルに保存し、次回確認することです。また、プラグインのアップグレードとアクティベーションもカバーしたい場合は、 'admin_init'などの別のフックを使用する必要があります(WP 3.1、 http:/を参照) /make.wordpress.org/core/2010/10/27/plugin-activation-hooks/ )。
これは、アクティベーションとアップグレードの両方を処理する完全なサンプルプラグインです。延期通知を配列にして、積み重ねることができるようにしました。
_<?php
/*
Plugin Name: My Plugin
*/
register_activation_hook(__FILE__, 'my_plugin_activation');
function my_plugin_activation() {
$notices= get_option('my_plugin_deferred_admin_notices', array());
$notices[]= "My Plugin: Custom Activation Message";
update_option('my_plugin_deferred_admin_notices', $notices);
}
add_action('admin_init', 'my_plugin_admin_init');
function my_plugin_admin_init() {
$current_version = 1;
$version= get_option('my_plugin_version');
if ($version != $current_version) {
// Do whatever upgrades needed here.
update_option('my_plugin_version', $current_version);
$notices= get_option('my_plugin_deferred_admin_notices', array());
$notices[]= "My Plugin: Upgraded version $version to $current_version.";
update_option('my_plugin_deferred_admin_notices', $notices);
}
}
add_action('admin_notices', 'my_plugin_admin_notices');
function my_plugin_admin_notices() {
if ($notices= get_option('my_plugin_deferred_admin_notices')) {
foreach ($notices as $notice) {
echo "<div class='updated'><p>$notice</p></div>";
}
delete_option('my_plugin_deferred_admin_notices');
}
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivation');
function my_plugin_deactivation() {
delete_option('my_plugin_version');
delete_option('my_plugin_deferred_admin_notices');
}
_
更新:set_transient()
の代わりにupdate_option()
を使用し、メッセージを正しい管理者ユーザーに送信する一般的な方法もあります。この投稿は、プラグインのアクティブ化ではなくメタボックスに関するものですが、私が知る限り、テクニックはダッシュボードのほぼすべての場所で同じように機能します: https://wordpress.stackexchange.com/questions/15354/passing-error-warning -messages-from-a-meta-box-to-admin-notices
これは通知を表示するのがとても簡単です
function your_admin_notice(){
echo '<div class="updated">
<p>I am a little yellow notice.</p>
</div>';
}
add_action('admin_notices', 'your_admin_notice');
ただし、却下可能な通知を表示したい場合は、以下を試してください
add_action('admin_notices', 'example_admin_notice');
function example_admin_notice() {
global $current_user ;
$user_id = $current_user->ID;
/* Check that the user hasn't already clicked to ignore the message */
if ( ! get_user_meta($user_id, 'example_ignore_notice') ) {
echo '<div class="updated"><p>';
printf(__('This is an annoying nag message. Why do people make these? | <a href="%1$s">Hide Notice</a>'), '?example_nag_ignore=0');
echo "</p></div>";
}
}
add_action('admin_init', 'example_nag_ignore');
function example_nag_ignore() {
global $current_user;
$user_id = $current_user->ID;
/* If user clicks to ignore the notice, add that to their user meta */
if ( isset($_GET['example_nag_ignore']) && '0' == $_GET['example_nag_ignore'] ) {
add_user_meta($user_id, 'example_ignore_notice', 'true', true);
}
}
また、特定のページにその通知を表示したい場合は、以下の条件を試してください。
function my_admin_notice(){
global $pagenow;
if ( $pagenow == 'plugins.php' ) {
echo '<div class="updated">
<p>This notice only appears on the plugins page.</p>
</div>';
}
}
add_action('admin_notices', 'my_admin_notice');
<div class='updated'>
を使用するだけです。例えば -
echo "<div class='updated'>Test Plugin Notice</div>";
新しい管理者通知を使用して、show_wp_pointer_admin_bar
を使用して管理者ポインタと呼ばれるものを作成できます。
Linky: http://wpengineer.com/2272/how-to-add-and-deactivate-the-new-feature-pointer-in-wordpress-3-3/
通知を追加する適切な方法は、admin_notices
アクションのフックに通知をエコーすることです。
function wpse8170_admin_notice(){
echo '<div class="updated"><p>This is my notice.</p></div>';
}
add_action('admin_notices', 'wpse8170_admin_notice');
私が開発した amarkal-admin-notification -静的/却下可能な管理者通知を追加し、却下を処理するスクリプト。このスクリプトは、Amarkal WordPressフレームワーク内のモジュールです。
例えば:
amarkal_admin_notification( 'my-error-notice', __('Oh snap! This is an <strong>error</strong> message.','slug'), 'error');