web-dev-qa-db-ja.com

WordPressはテーマなしで機能しますか?

WordPressはテーマなしで機能しますか?もしそうなら、それはどのように動作しますか?簡単に説明してください。

WordPressがテーマなしでコンテンツを表示している場合、何が出力を制御しますか?

17
chsuthar

そのための曲があると思います。

" theme がないと想像してみてください。試してみるのは簡単です。私たちの下に地獄はありません。

その想像上の夢の中で。

  • あなたはまだあなたのサイトからRSSフィードを取得することができます。

    example.com/feed/
    
  • あなたはまだあなたのバックエンドにログインすることができます:

    example.com/wp-login.php
    
  • それでもバックエンドにアクセスして(ほぼ)通常どおり作業することができます。

    example.com/wp-admin/
    
  • schedule件の投稿は機能しないため、Missed scheduleというメッセージが表示されます。

  • wp-cronは信頼できません。

  • あなたはまだ/wp-admin/admin-ajax.phpにアクセスできます

  • template_redirectおよびtempate_includeフックを使って出力を制御できます。たとえば、この小さなプラグインを試してください。

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

ps:私の金曜日答えを許しなさい - " しかし私だけではない " ;-)

29
birgire

テーマなしでWordPressを使用することは非常にまれであるため、その技術はあまり注目されていません。

まず、WordPressコアにはリクエストを扱う複数の「エンドポイント」があることを理解する必要があります。

  • 管理者側には、wp-admin/index.phpなど、独自の(そして多数の)ものがあります。
  • フロントサイドはほぼ普遍的にルートのindex.phpを通りますが、通常はかなりパーマリンクで「隠されて」います

あなたが 後者のファイルを見れば それは次の行を持っています:

define('WP_USE_THEMES', true);

そのため 通常 WordPressは常にフロントエンドにテーマがあることを期待し、それに応じてランタイム環境を設定します。テーマテンプレートが template-loader.php にロードされる場合のみ、この定数はそれほど制御しません。

コアブートプロセス中に親/子テーマ(存在する場合)が読み込まれるのを妨げることはありません。

そのため、 デフォルトで WordPressは、少なくとも1つのテーマが存在し、有効になっており、フロントエンドの表示に使用されるテンプレートを持っていると想定しています。

ただし、これはデフォルトの問題であり、完全に設定解除することができます。そのような場合、WordPressは管理者側で完全に機能し続けますが、フロントエンド側ではテーマテンプレートに依存するすべてのリクエストは何も表示しなくなります。

12
Rarst