Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm writing a plugin that checks and collects data from WP - including info about installed plugins.

I can get most of the data I require using get_plugins() - however, I'd also like to check for the latest repository hosted version of each plugin - but I can't seem to find an API method for this.

Sorry, I've got no code to paste for commenting.. but I've had a good search around - honest!

Where I can find a simple and efficient way to check?

share|improve this question

2 Answers 2

There is not quite simple way to do it, since WP check for plugin updates by submitting all their data in bulk and it's pretty buried in wp_update_plugins().

It performs request to http://api.wordpress.org/plugins/update-check/1.1/ API endpoint and gets data about all updates. It's not available as more contained function for individual checks.

You could also look into Plugin Information API to approach this from repository side.

share|improve this answer
    
Thanks @Rarst - I found the plugins_api function which got me to what I needed.. –  Q Studio Nov 19 '13 at 13:23
up vote 1 down vote accepted

Ok - here is a method - thanks to @Rarst for pointing me in the right direction.

Include the require file if the plugins_api function is not found:

if ( ! function_exists( 'plugins_api' ) ) {
      require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
}

Then, prepare a query to pass to plugins_api():

// set the arguments to get latest info from repository via API ##
$args = array(
    'slug' => 'plugin-slug-name',
    'fields' => array(
        'version' => true,
    )
);

/** Prepare our query */
$call_api = plugins_api( 'plugin_information', $args );

/** Check for Errors & Display the results */
if ( is_wp_error( $call_api ) ) {

    $api_error = $call_api->get_error_message();

} else {

    //echo $call_api; // everything ##

    if ( ! empty( $call_api->version ) ) {

        $version_latest = $call_api->version;

    }

}

ref: http://wp.tutsplus.com/tutorials/plugins/communicating-with-the-wordpress-org-plugin-api/

share|improve this answer
    
The API call is slow and costly - so results should be cached in transients.. –  Q Studio Nov 19 '13 at 13:23

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.