Покажите подтвердить сообщение перед сменной активацией

Я хочу отобразить сообщение когда пользовательская попытка активировать мой плагин. Это сообщение спросит, хочет ли его действительно активировать плагин или, если его передумали, отменяют активацию. Как я могу выполнить это? Это - код для предупреждающего сообщения только для ссылки.

---ОБНОВЛЕННЫЙ КОД---

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
21.09.2012, 01:43
2 ответа

Можно читать больше о деталях активации на этом ответе.

В основном необходимо сцепить функцию с 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
19.02.2020, 22:12
  • 1
    Хорошо я не программист, но я вижу, что Ваш код действительно имеет смысл. Я изменился "если (! $confirmed)" к, "если (! in_array (ФАЙЛ, $plugins))", и место мое сообщение об ошибке в функции wpse65190_on_activation_note, как Вы описываете, но я получаю сообщение "Плагин, генерировало x символы неожиданного вывода"... Что случилось? =) –  Daniel 15.09.2012, 17:15
  • 2
    Поэтому echo. Просто return вместо этого. –  kaiser 15.09.2012, 21:39
  • 3
    я заменяю эхо к возвратам, но получаю то же сообщение об ошибке. = ($column –  Daniel 17.09.2012, 21:40
  • 4
    Затем Вы получили ошибку где-то в другом месте. Удостоверьтесь, что включили каждый WP и php ошибочную функцию дисплея. Это сообщение только появляется, если что-то echos (или бросает ошибку) на активации. Я на 110% уверен. –  kaiser 17.09.2012, 22:57
  • 5
    You'r! Я нашел функцию, которая вызывала ошибку. Теперь ошибки не стало, но администраторское сообщение все еще не появляется. Мой файл отладки показывает эту ошибку: "Предупреждение PHP: call_user_func_array () [<href ='function.call-user-func-array'> function.call-user-func-array </a>]: Первым аргументом, как ожидают, будет допустимый обратный вызов, 'on_activation' был дан в/home/..." –  Daniel 18.09.2012, 22:04

Необходимо создать два различия, активированные и включенные. НЕОБХОДИМО было активировать плагин, иначе включенный, чтобы WP знал что логику обработать. Даже при том, что плагин активируется, можно все еще отключить функциональность и предупредить пользователя, что плагин активирован, но еще не включен.

Существует несколько плагинов, которые используют вторичный шаг включения. Можно смотреть на Частный WP и Единый Пакет SEO, чтобы видеть, как они выполняют это.

Вот то, как я приблизился бы к нему:

  1. Установите администраторское уведомление, после того как плагин активируется, предупреждая пользователя, они должны добавить функциональность сначала.
  2. Если определенная строка запроса установлена, добавьте опцию, которая отмечает, что они выбрали добавлять функциональность (т.е. update_option()). Вы могли бы хотеть создать страницу настроек с выбором, выпадающим, который показывает разрешать состояние.
  3. Проверьте то использование опции get_option() отключить администраторское уведомление и продолжить обрабатывать Ваш код.
1
19.02.2020, 22:12

Теги

Похожие вопросы