get_theme_update_available() – Retrieve the update link if there is a theme update available.

You appear to be a bot. Output may be restricted

Description

Retrieves the update link if there is a theme update available.

Will return a link if there is an update available.

Usage

$string|false = get_theme_update_available( $theme );

Parameters

$theme
( WP_Theme ) required – WP_Theme object.

Returns

string|false HTML for the update link, or false if invalid info was passed.

Source

File name: wordpress/wp-admin/includes/theme.php
Lines:

1 to 85 of 85
function get_theme_update_available( $theme ) {
  static $themes_update = null;

  if ( ! current_user_can( 'update_themes' ) ) {
    return false;
  }

  if ( ! isset( $themes_update ) ) {
    $themes_update = get_site_transient( 'update_themes' );
  }

  if ( ! ( $theme instanceof WP_Theme ) ) {
    return false;
  }

  $stylesheet = $theme->get_stylesheet();

  $html = '';

  if ( isset( $themes_update->response[ $stylesheet ] ) ) {
    $update      = $themes_update->response[ $stylesheet ];
    $theme_name  = $theme->display( 'Name' );
    $details_url = add_query_arg(
      array(
        'TB_iframe' => 'true',
        'width'     => 1024,
        'height'    => 800,
      ),
      $update['url']
    ); // Theme browser inside WP? Replace this. Also, theme preview JS will override this on the available list.
    $update_url  = wp_nonce_url( admin_url( 'update.php?action=upgrade-theme&theme=' . urlencode( $stylesheet ) ), 'upgrade-theme_' . $stylesheet );

    if ( ! is_multisite() ) {
      if ( ! current_user_can( 'update_themes' ) ) {
        $html = sprintf(
          /* translators: 1: Theme name, 2: Theme details URL, 3: Additional link attributes, 4: Version number. */
          '<p><strong>' . __( 'There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>.' ) . '</strong></p>',
          $theme_name,
          esc_url( $details_url ),
          sprintf(
            'class="thickbox open-plugin-details-modal" aria-label="%s"',
            /* translators: 1: Theme name, 2: Version number. */
            esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme_name, $update['new_version'] ) )
          ),
          $update['new_version']
        );
      } elseif ( empty( $update['package'] ) ) {
        $html = sprintf(
          /* translators: 1: Theme name, 2: Theme details URL, 3: Additional link attributes, 4: Version number. */
          '<p><strong>' . __( 'There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a>. <em>Automatic update is unavailable for this theme.</em>' ) . '</strong></p>',
          $theme_name,
          esc_url( $details_url ),
          sprintf(
            'class="thickbox open-plugin-details-modal" aria-label="%s"',
            /* translators: 1: Theme name, 2: Version number. */
            esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme_name, $update['new_version'] ) )
          ),
          $update['new_version']
        );
      } else {
        $html = sprintf(
          /* translators: 1: Theme name, 2: Theme details URL, 3: Additional link attributes, 4: Version number, 5: Update URL, 6: Additional link attributes. */
          '<p><strong>' . __( 'There is a new version of %1$s available. <a href="%2$s" %3$s>View version %4$s details</a> or <a href="%5$s" %6$s>update now</a>.' ) . '</strong></p>',
          $theme_name,
          esc_url( $details_url ),
          sprintf(
            'class="thickbox open-plugin-details-modal" aria-label="%s"',
            /* translators: 1: Theme name, 2: Version number. */
            esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme_name, $update['new_version'] ) )
          ),
          $update['new_version'],
          $update_url,
          sprintf(
            'aria-label="%s" id="update-theme" data-slug="%s"',
            /* translators: %s: Theme name. */
            esc_attr( sprintf( _x( 'Update %s now', 'theme' ), $theme_name ) ),
            $stylesheet
          )
        );
      }
    }
  }

  return $html;
}
 

 View on GitHub View on Trac