Как отобразить уведомление в админ-панели при активации плагина? - PullRequest
14 голосов
/ 21 марта 2012

Я пытаюсь отобразить уведомление на панели администратора при активации моего тестового плагина.
Как это отобразить?Что это за метод?

Ответы [ 6 ]

25 голосов
/ 22 сентября 2012

Для активаций плагина, ловушка «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() и направлять сообщения.как администратору. Этот пост касается метабоксов, а не активации плагинов, но методы работают одинаково практически везде в Dashboard, насколько я знаю: https://wordpress.stackexchange.com/questions/15354/passing-error-warning-messages-from-a-meta-box-to-admin-notices

6 голосов
/ 09 января 2015

Это так просто, чтобы показать уведомление

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');

Вы можете увидеть здесь

3 голосов
/ 21 марта 2012

Вы можете использовать новые уведомления администратора для создания так называемых указателей администратора, используя show_wp_pointer_admin_bar.

Linky: http://wpengineer.com/2272/how-to-add-and-deactivate-the-new-feature-pointer-in-wordpress-3-3/

3 голосов
/ 21 марта 2012

Просто используйте <div class='updated'>. Например -

echo "<div class='updated'>Test Plugin Notice</div>";
1 голос
/ 20 июня 2012

Правильный способ добавления ваших уведомлений - отразить их в вашем хуке для действия admin_notices:

function wpse8170_admin_notice(){
    echo '<div class="updated"><p>This is my notice.</p></div>';
}
add_action('admin_notices', 'wpse8170_admin_notice');
0 голосов
/ 25 июля 2016

Я разработал amarkal-admin-messages - скрипт, который позволяет добавлять статические / запрещенные уведомления администратора и обрабатывает увольнение для вас.Этот скрипт является модулем в рамках Amarkal WordPress.

Например:

amarkal_admin_notification( 'my-error-notice', __('Oh snap! This is an <strong>error</strong> message.','slug'), 'error');
...