Я получаю это сообщение каждый раз, когда я активирую свой плагин:
Плагин генерировал 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 символ неожиданного выхода во время активации. Если вы заметили сообщения «уже отправленные», проблемы с фидами синдикации или другие проблемы, попробуйте отключить или удалить этот плагин.
Обычно это вызвано пробелами или новыми строками перед открывающим тегом. Как только я удалил их, ошибка исчезла.
теперь моя ошибка плагина исчезла.
У меня была такая же проблема, я попытался удалить код и сделал все, но все тот же вопрос
реальное решение для меня было следующим.
мой файл плагина закончился в строке 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