Theme_Upgrader::check_parent_theme_filter() WordPress Method

The Theme_Upgrader::check_parent_theme_filter() method is used to check whether a given theme is a child theme of the currently active theme. If the theme is a child theme, the method returns the template directory of the parent theme. Otherwise, the method returns false.

Theme_Upgrader::check_parent_theme_filter( bool $install_result, array $hook_extra, array $child_result ) #

Check if a child theme is being installed and we need to install its parent.


Description

Hooked to the ‘upgrader_post_install’ filter by Theme_Upgrader::install().


Top ↑

Parameters

$install_result

(bool)(Required)

$hook_extra

(array)(Required)

$child_result

(array)(Required)


Top ↑

Return

(bool)


Top ↑

Source

File: wp-admin/includes/class-theme-upgrader.php

124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
public function check_parent_theme_filter( $install_result, $hook_extra, $child_result ) {
    // Check to see if we need to install a parent theme.
    $theme_info = $this->theme_info();
 
    if ( ! $theme_info->parent() ) {
        return $install_result;
    }
 
    $this->skin->feedback( 'parent_theme_search' );
 
    if ( ! $theme_info->parent()->errors() ) {
        $this->skin->feedback( 'parent_theme_currently_installed', $theme_info->parent()->display( 'Name' ), $theme_info->parent()->display( 'Version' ) );
        // We already have the theme, fall through.
        return $install_result;
    }
 
    // We don't have the parent theme, let's install it.
    $api = themes_api(
        'theme_information',
        array(
            'slug'   => $theme_info->get( 'Template' ),
            'fields' => array(
                'sections' => false,
                'tags'     => false,
            ),
        )
    ); // Save on a bit of bandwidth.
 
    if ( ! $api || is_wp_error( $api ) ) {
        $this->skin->feedback( 'parent_theme_not_found', $theme_info->get( 'Template' ) );
        // Don't show activate or preview actions after installation.
        add_filter( 'install_theme_complete_actions', array( $this, 'hide_activate_preview_actions' ) );
        return $install_result;
    }
 
    // Backup required data we're going to override:
    $child_api             = $this->skin->api;
    $child_success_message = $this->strings['process_success'];
 
    // Override them.
    $this->skin->api = $api;
 
    $this->strings['process_success_specific'] = $this->strings['parent_theme_install_success'];
 
    $this->skin->feedback( 'parent_theme_prepare_install', $api->name, $api->version );
 
    add_filter( 'install_theme_complete_actions', '__return_false', 999 ); // Don't show any actions after installing the theme.
 
    // Install the parent theme.
    $parent_result = $this->run(
        array(
            'package'           => $api->download_link,
            'destination'       => get_theme_root(),
            'clear_destination' => false, // Do not overwrite files.
            'clear_working'     => true,
        )
    );
 
    if ( is_wp_error( $parent_result ) ) {
        add_filter( 'install_theme_complete_actions', array( $this, 'hide_activate_preview_actions' ) );
    }
 
    // Start cleaning up after the parent's installation.
    remove_filter( 'install_theme_complete_actions', '__return_false', 999 );
 
    // Reset child's result and data.
    $this->result                     = $child_result;
    $this->skin->api                  = $child_api;
    $this->strings['process_success'] = $child_success_message;
 
    return $install_result;
}


Top ↑

Changelog

Changelog
VersionDescription
3.4.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by the Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.