問題描述

WordPress 工作沒有主題嗎?如果是這樣,那麼它如何工作?請簡單解釋一下。

如果 WordPress 顯示的內容沒有主題,什麼控制輸出?

最佳解決方案

我覺得有一首歌:

“Imagine there’s no theme. It’s easy if you try. No hell below us. Above us only sky …” 😉

所以在那個虛構的夢想中:

  • 您仍然可以從您的網站獲取 RSS Feed:

    example.com/feed/
    
  • 您仍然可以登入到您的後端:

    example.com/wp-login.php
    
  • 您仍然可以訪問後端並在那裡工作 (幾乎) 像往常一樣:

    example.com/wp-admin/
    
  • 排程帖子將無法正常工作,因此您將收到 Missed schedule 訊息。

  • wp-cron 不可靠。

  • 您仍然可以訪問/wp-admin/admin-ajax.php

  • 您可以使用 template_redirecttempate_include 鉤子來控制輸出。嘗試這個小外掛:

    <?php
    /** Plugin Name: No-Theme-Day **/
    add_action( 'template_redirect',
        function()
        {
            wp_die( __( "Jibby! It's the No-Theme-Day today!" ) );
        }
    );
    

ps:原諒我星期五的答案 – 「But I’m not the only one」;-)

次佳解決方案

由於使用沒有主題的 WordPress 是相當罕見的技術性沒有得到很多的關注。

首先你必須明白在 WordPress 核心處理請求時有多個”endpoints” 。

  • 管理端有自己的 (和眾多的),如 wp-admin/index.php

  • 前端幾乎普遍透過 index.php 在根,但它通常是”hidden” 由漂亮的永久連結

如果你的 take a look at the latter file 它有以下行:

define('WP_USE_THEMES', true);

所以通常 WordPress 希望前端總是有一個主題,並相應地配置執行時環境。這個常數不會太大,只有在 template-loader.php 中載入主題模板。

請注意,它不會阻止在核心引導過程中載入父/子主題 (如果存在) 。

因此,預設情況下,WordPress 希望至少有一個主題存在,啟用,並且將模板用於前端顯示。

然而,這只是一個預設的問題,可以完全配置掉。在這種情況下,WordPress 將繼續在管理端完全執行,而在前端,所有依賴主題模板的請求都將停止顯示任何內容。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。