[WordPress] 這個外掛在啟用時產生了 X 個未預期輸出字元,的解決辦法

本篇文章更新時間:2023/11/21
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


剛好最近卯起來更新我的外掛,希望讓日後作業更方便一點。今天就碰到一個神奇的問題,啟用外掛時出現了這個錯誤「這個外掛在啟用時產生了 X 個未預期輸出字元」,但也沒有把這個「字元」給輸出,完全不知道錯在哪。

翻譯的原文在 wp-admin/plugins.php,「The plugin generated %d character of unexpected output during activation.

網友提供了下面的方法:

define('MXP_TEMP_FILE', ABSPATH . '/_MXP_TEMP_FILE.txt');

function mxp_activation_output_handler() {
    $cont = ob_get_contents();
    if (!empty($cont)) {
        file_put_contents(MXP_TEMP_FILE, $cont);
    }
}
function mxp_pre_output_action($action) {
    if (is_admin() && file_exists(MXP_TEMP_FILE)) {
        $cont = file_get_contents(MXP_TEMP_FILE);
        if (!empty($cont)) {
            echo ' Error Message:' . $cont . '';
            @unlink(MXP_TEMP_FILE);
        }
    }
}
add_action("activated_plugin", "mxp_activation_output_handler");
add_action("pre_current_active_plugins", "mxp_pre_output_action");

放置在佈景(子)主題下的 functions.php 中就會有動作。

原理也不難,就是掛在 activated_pluginpre_current_active_plugins 這兩個勾點,如有「不預期」的輸出,就補捉起來寫入到定義的一個檔案裡,然後如果檔案裡有輸出就讀取出來顯示並刪除這個暫存檔案。

不一定要用檔案來當媒介,暫存進 options 設定資料表也可以,總之關鍵就是 ob_get_contents() 這方法把這輸出捕捉到來顯示。

如此方式除錯,很快就找到問題來解決了。不然原本還真只有寫意外輸出了幾個字元,完全無頭緒。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon