Я пытаюсь отобразить уведомление в панели администратора, когда я активирую свой тестовый плагин. Как это показать? Кто-нибудь знает этот метод?WordPress: как отображать уведомление в панели администратора, при активации плагина?
ответ
Для плагин активаций, крюк «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');
}
UPDATE: Там также общий способ использовать set_transient()
вместо update_option()
, и направлять сообщения на правильный пользователя с правами администратора. Этот пост относится к метабоксам, не плагин активации, но методы работают так же, почти везде в Dashboard, насколько я знаю: https://wordpress.stackexchange.com/questions/15354/passing-error-warning-messages-from-a-meta-box-to-admin-notices
Просто используйте <div class='updated'>
. Например -
echo "<div class='updated'>Test Plugin Notice</div>";
да, но тогда это уведомление с указанием всех времен, я хочу, как это уведомление исчезнет, когда я нажимаю на конфигурацию ссылке в этом уведомлении (после активации) – Thompson
В этом случае вам просто нужно добавить флаг, который будет храниться, если пользователь посетил конфигурацию плагина. Вы можете сохранить этот флаг в таблице 'wp_options''. – ronakg
Вы можете использовать новые уведомления администратора, чтобы создать то, что называют администратора указатели с помощью 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');
Но он не отображается при активации плагина в качестве вопроса. – Progrock
Это так просто, чтобы показать уведомление
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');
Я правильно понял, что мне нужно создать функцию обратного вызова для каждого сообщения, которое я хочу отобразить? Как создать функцию, которая принимает параметр, который указывает, что такое сообщение об ошибке? – majikman
Хорошо, если вы хотите отобразить сообщение об ошибке, тогда есть и другой способ. Для отображения admin_notice с параметром вы можете попробовать самый верхний ответ здесь. Также вы можете найти путь по ссылкам ниже: http://stackoverflow.com/questions/1242328/wordpress-displaying-an-error-message-hook-admin-notices-fails-on-wp-insert-p –
Я разработал amarkal-admin-notification - скрипт, который позволяет добавлять статические/неотстранимые уведомления администратора и обрабатывает увольнение для вас. Этот скрипт является модулем в рамках Amarkal WordPress.
Например:
amarkal_admin_notification('my-error-notice', __('Oh snap! This is an <strong>error</strong> message.','slug'), 'error');
- 1. Ошибка активации плагина wordpress
- 2. Wordpress, как создать таблицу при активации плагина
- 3. Как решить ошибку активации плагина в wordpress
- 4. Создание страниц при активации плагина WordPress
- 5. создать параметр настройки в панели администратора плагина в wordpress
- 6. Ошибка панели администратора Wordpress?
- 7. Как переместить файл в wordpress при активации плагина
- 8. Как создать таблицу при активации плагина в wordpress
- 9. (wordpress) Как запустить функцию в моем плагине при активации плагина
- 10. Таблица базы данных не создается при активации плагина в wordpress
- 11. Показать сообщение о активации и деактивации плагина в wordpress
- 12. wordpress plugin создание панели администратора
- 13. Отображать значения из пользовательских таблиц в WordPress панели администратора
- 14. Плагины WordPress не отображаются в панели администратора
- 15. Как добавить ссылку меню при активации плагина wordpress?
- 16. Таблица Databse, не создаваемая при активации плагина в Wordpress
- 17. wordpress - front css, примененный в панели администратора
- 18. Как выделить комментарии в панели администратора WordPress?
- 19. Показать сообщение после активации плагина WordPress
- 20. Wordpress - уведомление об обновлении на странице плагина
- 21. Внутренняя ошибка сервера 500 при активации плагина WordPress
- 22. Скрыть опцию панели администратора WordPress
- 23. Простая страница на панели администратора - Wordpress
- 24. Сделать две или несколько таблиц при активации плагина wordpress
- 25. Отключить уведомление об отключении плагина в wordpress
- 26. Отключить Bootstrap в панели администратора Wordpress
- 27. Отключить перезапуск панели администратора в wordpress
- 28. Сложность меню в панели администратора Wordpress скомпрометирована
- 29. Плагин Wordpress не работает при активации
- 30. jQuery.on() не работает в панели администратора WordPress
Это выглядит хорошо, моим единственным комментарием было бы СУХОЙ часть, где вы добавляете новое уведомление. – pguardiario
Да, три строки '$ notices = get_option (...); $ замечает [] = ...; update_option (..., $ notices) 'можно абстрагировать до функции my_plugin_add_notice()' общего назначения. Вы часто видите это с параметром «note» против «error».Тогда тогда функция рендеринга отображает ее в стиле WP как синий или красный баннер, используя css-класс «update» или «error», если я правильно помню. – kitchin