wpseek.com
Outil de recherche WordPress pour les développeurs et auteurs de thèmes



resume_theme › WordPress Function

Depuis5.2.0
Dépréciéen/a
resume_theme ( $theme, $redirect = '' )
Paramètres: (2)
  • (string) $theme Single theme to resume.
    Requis: Oui
  • (string) $redirect Optional. URL to redirect to. Default empty string.
    Requis: Non
    Défaut: (vide)
Retourne:
  • (bool|WP_Error) True on success, false if `$theme` was not paused, `WP_Error` on failure.
Défini(e) dans:
Codex:

Tries to resume a single theme.

If a redirect was provided and a functions.php file was found, we first ensure that functions.php file does not throw fatal errors anymore. The way it works is by setting the redirection to the error before trying to include the file. If the theme fails, then the redirection will not be overwritten with the success message and the theme will not be resumed.


Source

function resume_theme( $theme, $redirect = '' ) {
	global $wp_stylesheet_path, $wp_template_path;

	list( $extension ) = explode( '/', $theme );

	/*
	 * We'll override this later if the theme could be resumed without
	 * creating a fatal error.
	 */
	if ( ! empty( $redirect ) ) {
		$functions_path = '';
		if ( str_contains( $wp_stylesheet_path, $extension ) ) {
			$functions_path = $wp_stylesheet_path . '/functions.php';
		} elseif ( str_contains( $wp_template_path, $extension ) ) {
			$functions_path = $wp_template_path . '/functions.php';
		}

		if ( ! empty( $functions_path ) ) {
			wp_redirect(
				add_query_arg(
					'_error_nonce',
					wp_create_nonce( 'theme-resume-error_' . $theme ),
					$redirect
				)
			);

			// Load the theme's functions.php to test whether it throws a fatal error.
			ob_start();
			if ( ! defined( 'WP_SANDBOX_SCRAPING' ) ) {
				define( 'WP_SANDBOX_SCRAPING', true );
			}
			include $functions_path;
			ob_clean();
		}
	}

	$result = wp_paused_themes()->delete( $extension );

	if ( ! $result ) {
		return new WP_Error(
			'could_not_resume_theme',
			__( 'Could not resume the theme.' )
		);
	}

	return true;
}