
WPホームページ研究所運営サポートチーム監修のオムスビ(@OMUSUVIcom)です。
ごく稀にプラグインを有効化するとエラーメッセージが表示されるケースがありますよね。下記ではプラグインを有効化した直後に「予期しない文字列が出力されるエラー」についてご紹介させていただきます。
プラグインの有効化後に予期しない文字出力が生成される原因とは?
実際に表示されるメッセージは下記です。
プラグインの有効化中に◎◎◎文字の予期しない出力が生成されました。 “headers already sent” メッセージや RSS フィードの問題、その他の不具合に気づいた場合、このプラグインの停止または削除を試してください。
実際にスクリーンショットが以下ですね。
原因はプラグインがアクティベート(有効化)のタイミングで「echo」している点。
<?php
/*
Plugin Name: Headers already sent TEST
Plugin URI: https://example.com
Description: Headers already sentを出力するテストです。
Version: 1.0
Author: WPホームページ研究所
Author URI: https://example.com
License: GNU
*/
// プラグイン有効直後に「echo」すると表示される
echo "test!";
?>
プラグイン有効化時に「register_activation_hook」が呼び出されているので下記も同じエラーが表示されます。
<?php
/*
Plugin Name: Headers already sent TEST
Plugin URI: https://example.com
Description: Headers already sentを出力するテストです。
Version: 1.0
Author: WPホームページ研究所
Author URI: https://example.com
License: GNU
*/
function headers_already_sent_test_script() {
echo 'test!';
}
register_activation_hook( __FILE__, 'headers_already_sent_test_script' );
?>
アクションフックで実行をずらせば解決。
<?php
/*
Plugin Name: Headers already sent TEST
Plugin URI: https://example.com
Description: Headers already sentを出力するテストです。
Version: 1.0
Author: WPホームページ研究所
Author URI: https://example.com
License: GNU
*/
// 実行するタイミングを「init」に変更する
add_action( 'init', function() { echo 'test!'; });
?>
命令文が実行されるタイミングさえ変えれば書き方はどちらでもOKです。
// 省略せずに書く方法
function headers_already_sent_test_script() {
echo 'test!';
}
add_action( 'init', 'headers_already_sent_test_script');
ぜひご参考くださいませ。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する