问题描述

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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。