Make WordPress Core

Changeset 52940


Ignore:
Timestamp:
03/16/2022 06:28:46 PM (5 years ago)
Author:
SergeyBiryukov
Message:

Themes: Allow block themes to be activated without index.php.

This removes the requirement for block themes to have an unused index.php template just for activation, as they use a templates/index.html file instead.

The updated requirements are as follows:

  • Standalone themes need to have a templates/index.html or index.php template file.
  • Child themes need to have a Template header in the style.css stylesheet.

Follow-up to [52069], [52247].

Props poena, sabbirshouvo, scruffian, manfcarlo, overclokk, andraganescu, SergeyBiryukov.
Fixes #54272.

Location:
trunk/src/wp-includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-theme.php

    r52929 r52940  
    339339                if ( ! $this->template ) {
    340340                        $this->template = $this->stylesheet;
    341                         if ( ! file_exists( $this->theme_root . '/' . $this->stylesheet . '/index.php' ) ) {
     341                        $theme_path     = $this->theme_root . '/' . $this->stylesheet;
     342
     343                        if ( ! file_exists( $theme_path . '/templates/index.html' )
     344                                && ! file_exists( $theme_path . '/index.php' )
     345                        ) {
    342346                                $error_message = sprintf(
    343                                         /* translators: 1: index.php, 2: Documentation URL, 3: style.css */
    344                                         __( 'Template is missing. Standalone themes need to have a %1$s template file. <a href="%2$s">Child themes</a> need to have a Template header in the %3$s stylesheet.' ),
     347                                        /* translators: 1: templates/index.html, 2: index.php, 3: Documentation URL, 4: style.css */
     348                                        __( 'Template is missing. Standalone themes need to have a %1$s or %2$s template file. <a href="%3$s">Child themes</a> need to have a Template header in the %4$s stylesheet.' ),
     349                                        '<code>templates/index.html</code>',
    345350                                        '<code>index.php</code>',
    346351                                        __( 'https://developer.wordpress.org/themes/advanced-topics/child-themes/' ),
  • trunk/src/wp-includes/theme.php

    r52828 r52940  
    831831
    832832/**
    833  * Checks that the active theme has 'index.php' and 'style.css' files.
     833 * Checks that the active theme has the required files.
     834 *
     835 * Standalone themes need to have a `templates/index.html` or `index.php` template file.
     836 * Child themes need to have a `Template` header in the `style.css` stylesheet.
    834837 *
    835838 * Does not initially check the default theme, which is the fallback and should always exist.
     
    841844 *
    842845 * @since 1.5.0
     846 * @since 6.0.0 Removed the requirement for block themes to have an `index.php` template.
    843847 *
    844848 * @see WP_DEFAULT_THEME
     
    858862        }
    859863
    860         if ( ! file_exists( get_template_directory() . '/index.php' ) ) {
     864        if ( ! file_exists( get_template_directory() . '/templates/index.html' )
     865                && ! file_exists( get_template_directory() . '/index.php' )
     866        ) {
    861867                // Invalid.
    862868        } elseif ( ! file_exists( get_template_directory() . '/style.css' ) ) {
Note: See TracChangeset for help on using the changeset viewer.