WC_Admin_Status::get_latest_theme_version() – Get latest version of a theme by slug.

You appear to be a bot. Output may be restricted

Description

Get latest version of a theme by slug.

Usage

$string = WC_Admin_Status::get_latest_theme_version( $theme );

Parameters

$theme
( object ) required – WP_Theme object.

Returns

string Version number if found.

Source

File name: woocommerce/includes/admin/class-wc-admin-status.php
Lines:

1 to 52 of 52
  public static function get_latest_theme_version( $theme ) {
    include_once ABSPATH . 'wp-admin/includes/theme.php';

    $api = themes_api(
      'theme_information',
      array(
        'slug'   => $theme->get_stylesheet(),
        'fields' => array(
          'sections' => false,
          'tags'     => false,
        ),
      )
    );

    $update_theme_version = 0;

    // Check .org for updates.
    if ( is_object( $api ) && ! is_wp_error( $api ) ) {
      $update_theme_version = $api->version;
    } elseif ( strstr( $theme->{'Author URI'}, 'woothemes' ) ) { // Check WooThemes Theme Version.
      $theme_dir          = substr( strtolower( str_replace( ' ', '', $theme->Name ) ), 0, 45 ); // @codingStandardsIgnoreLine.
      $theme_version_data = get_transient( $theme_dir . '_version_data' );

      if ( false === $theme_version_data ) {
        $theme_changelog = wp_safe_remote_get( 'http://dzv365zjfbd8v.cloudfront.net/changelogs/' . $theme_dir . '/changelog.txt' );
        $cl_lines        = explode( "\n", wp_remote_retrieve_body( $theme_changelog ) );
        if ( ! empty( $cl_lines ) ) {
          foreach ( $cl_lines as $line_num => $cl_line ) {
            if ( preg_match( '/^[0-9]/', $cl_line ) ) {
              $theme_date         = str_replace( '.', '-', trim( substr( $cl_line, 0, strpos( $cl_line, '-' ) ) ) );
              $theme_version      = preg_replace( '~[^0-9,.]~', '', stristr( $cl_line, 'version' ) );
              $theme_update       = trim( str_replace( '*', '', $cl_lines[ $line_num + 1 ] ) );
              $theme_version_data = array(
                'date'      => $theme_date,
                'version'   => $theme_version,
                'update'    => $theme_update,
                'changelog' => $theme_changelog,
              );
              set_transient( $theme_dir . '_version_data', $theme_version_data, DAY_IN_SECONDS );
              break;
            }
          }
        }
      }

      if ( ! empty( $theme_version_data['version'] ) ) {
        $update_theme_version = $theme_version_data['version'];
      }
    }

    return $update_theme_version;
  }
 

 View on GitHub View on Trac