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().
Parameters
- $install_result
(bool)(Required)
- $hook_extra
(array)(Required)
- $child_result
(array)(Required)
Return
(bool)
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 ; } |
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
3.4.0 | Introduced. |