x символов, генерируемых плагином WordPress во время активации

Я получаю это сообщение каждый раз, когда я активирую свой плагин:

Плагин генерировал 80 символов неожиданного выхода во время активации. Если вы заметили сообщения «уже отправленные», проблемы с фидами синдикации или другие проблемы, попробуйте отключить или удалить этот плагин.

Единственный способ, которым я смог подавить сообщение, заключался в том, чтобы связать мой код функции активации внутри оператора if (см. Ниже фрагменты).

Здесь, фрагмент моего кода плагина, когда я получаю ошибку, описанную выше:

function myPlugin( $post ) { echo "Whatever is here throws an unexpected output alert when the plugin isa activated"; } register_activation_hook( __FILE__, 'myPlugin' ); 

Следуя за моим завершением функции в моем плагине в выражении if ; он подавляет предыдущую ошибку, как обсуждалось выше:

 function myPlugin( $post ) { global $pagenow; if ( is_admin() && $pagenow !== 'plugins.php' ) { echo "No more alerts when its wrapped this way"; } } } register_activation_hook( __FILE__, 'myPlugin' ); 

Что на самом деле вызывает эту ошибку и как я могу эффективно завершить свой плагин с помощью своих логик, не сталкиваясь с этим?

Есть ли лучший способ справиться с этим?

Я думаю, здесь могут быть две проблемы, которые вызывают проблему. Во-первых, я не думаю, что WordPress ожидает какой-либо выход, когда вызван крючок активации плагина, поэтому он может жаловаться на это. Во-вторых, что крючки активации плагина называются довольно ранними в потоке программ WordPress, поэтому его, вероятно, вызывают перед отправкой заголовков. Если ANY-выход генерируется перед вызовом header() то PHP обычно жалуется.

Обычно процедура активации плагина зарезервирована для базовой настройки плагина, вызывает такие вещи, как set_option() и тому подобное.

Ниже представлен фрагмент ниже:

 register_activation_hook( __FILE__, 'my_activation_func' ); function my_activation_func() { file_put_contents( __DIR__ . '/my_loggg.txt', ob_get_contents() ); } 

Вставьте этот код в наш плагин, чтобы регистрировать любую ошибку, которая может возникнуть во время ее активации.

Чтобы просмотреть любую возможную ошибку, my_loggg.txt файлу my_loggg.txt который будет расположен в вашем каталоге wp-content/plugins/ если ваш плагин доступен прямо там как один файл PHP.

Если не как один PHP-файл, а внутри его собственной папки (скажем, my-plugin-name ), вы можете получить доступ к вашему файлу my_loggg.txt в папке вашего плагина как: в wp-content/plugins/my-plugin-name/ каталог.

У меня была такая же ошибка – 3 символа неожиданного выхода и была проведена здесь. Для людей в моем сценарии другая причина этого сообщения может быть типом файла, который кодируется как UTF с помощью спецификации.

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

Решение состоит в том, чтобы использовать Notepad ++ и выбрать «Преобразовать в UTF без спецификации», или если вы используете визуальную студию, есть объяснение того, как изменить кодировку UTF-8 без спецификации

Имела ту же ошибку, но только с 6 символами), поэтому … в моем случае у меня были пустые строки после закрытия PHP тега?> – это тоже вызовет эту ошибку.

Я долгое время боролся с этой проблемой. Обычно это вызвано пробелами или новыми строками перед открывающим <?php или тегом закрытия ?> . Как только я удалил их, ошибка исчезла.

Кроме того, никогда не предполагайте ничего о переменных GET , POST , COOKIE и REQUEST . Всегда проверяйте сначала с помощью isset() или empty() .

иногда это происходит потому, что вы используете <?php ;?> ненужные или используете его, как показано ниже

 ;?> <?php 

эта дополнительная строка между тегом закрытия и запуска может также вызвать эту ошибку, просто удалите эту строку / пространство

Эту проблему можно решить, удалив лишние пробелы. Я решил эту проблему для своего кода. Вы можете легко удалить лишние пробелы в Adove Dreamweaver.

Сначала перейдите в edit-> Find and Replace. Или нажмите Ctrl + F. Установите флажок «Использовать регулярное выражение» в разделе «Опция».

Заполните поле «find» с помощью кода ниже

 [\r\n]{2,} 

Заполните поле «Заменить» следующим кодом

 \n 

Теперь нажмите кнопку «Заменить все». Надеюсь, это сработает.

Я также получил эту проблему, когда я активирую свой плагин

Плагин генерировал 1 символ неожиданного выхода во время активации. Если вы заметили сообщения «уже отправленные», проблемы с фидами синдикации или другие проблемы, попробуйте отключить или удалить этот плагин.

Обычно это вызвано пробелами или новыми строками перед открывающим тегом. Как только я удалил их, ошибка исчезла.

теперь моя ошибка плагина исчезла.

У меня была такая же проблема, я попытался удалить код и сделал все, но все тот же вопрос

реальное решение для меня было следующим.

  1. в конце файла, который содержит заголовок плагина, я удалил закрытие php?>, и проблема будет решена
  2. в конце файла плагина, который содержит заголовок плагина, удалите лишние строки после закрытия php?>

мой файл плагина закончился в строке 69, и было еще 7 интервалов после последнего php-кода, поэтому в редакторе файл был до 66, моя ошибка: «Плагин сгенерировал 7 символов неожиданного ….», когда я удалил лишние строки до 69, ошибка была упущена,

благодаря

проверьте здесь, чтобы узнать больше информации, которую вы можете использовать:

 <?php include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); If (is_plugin_active('wshops/init.php')) { //Run your plugin includes files or functions } 

в файле инициализации php.

Обычный способ присвоения register_activation_hook использует статический метод класса. Это гарантирует, что имя функции активации плагина не будет взаимодействовать с другими плагинами.

 class Foo_Plugin { public static function plugin_activation() { // activation logic } } 

Эта функция должна быть общедоступной, а не частной. Ошибка легко сделана, так что это может послужить причиной ваших проблем при получении такого рода ошибок.

Затем вы зарегистрируете активацию с помощью этого кода в основном файле плагина.

 register_activation_hook( __FILE__, array( 'Foo_Plugin', 'plugin_activation' ) ); 

Моя проблема заключалась в том, что в основном php-файле я добавил в конце файла функцию javascript. Кажется, что wordpress перехватывает такую ​​функцию в элементе head. Я использовал эту функцию в файле java-скрипта.

До:

 <?php /** * Plugin Name: yyy * Description: yyy * Author: yyy * Author URI: yyy * Version: yyy */ /* many functions here */ function insert_in_header() { echo '<script type="text/javascript">', "perform_redirection(", '"', get_option('root'), '"', ", ", '"', get_option('redirect_to'), '");', '</script>'; } add_action('wp_head', 'insert_in_header'); ?> <--! PROBLEMS HERE--> <script type = "text/javascript"> function perform_redirections(root, redirectionLink) { // code here } </script> 

Сообщение об ошибке The plugin generated *X* characters of unexpected output during activation не очень полезен или, по крайней мере, недостаточно.

Чтобы помочь найти проблему, добавьте их в wp-config.php :

 define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); 

Затем проверьте wp-content/debug.log для получения более подробных сообщений об ошибках.

В моем случае это произошло из-за неопределенного индекса. Просто включите журнал отладки, чтобы проверить, что вызывает его, тогда вы можете легко его решить.

Для тех, кто не знает, как включить журнал Debug, добавьте эти строки в свой wp-config.php:

  define( 'WP_DEBUG', true ); define( 'WP_DEBUG_DISPLAY', true ); define( 'WP_DEBUG_LOG', true ); 

Вы можете правильно видеть ошибки в файле отладки, созданного в wp-content