[wp-testers] Issue with version_compare()

Dion Hulse (dd32) wordpress at dd32.id.au
Mon Jun 14 07:54:26 UTC 2010


On Mon, 14 Jun 2010 17:48:52 +1000, Kim Parsell <kparsell-wp at kpdesign.net>  
wrote:

> I'm reworking my plugin, and need to use version_compare() in order to
> serve up the correct code to users of either 2.9 or 3.0.
>
> A sample of the code I'm using is:
>
>         if (version_compare($wp_version, '2.9', '=')) {
>             // do something here
>         } else if (version_compare($wp_version, '3.0', '=')) {
>             // do something else
>         }
>
> In testing on my 3.0 dev install (single user mode), the code to be
> served to the 3.0 users wasn't executing unless I changed the last part
> from '=' to '<='.
>
> I did a search through Trac and came upon a comment in a ticket
> (http://core.trac.wordpress.org/ticket/13566#comment:12) where someone
> else was having the same issue with the new importers.
>
> My understanding of comment 13 from mdawaffe is that api.wordpress.org
> should now be using everything before the first "-" when comparing
> version strings, so the code I have above *should* work; however, it  
> isn't.
>
> Is the change to the API only available for checking if a new version of
> a plugin is available for download, or should it also work in a plugin
> when doing version_compare(), such as what I'm trying to do?

It wont affect version_compare() since thats a PHP function, The code that  
mdawaffe has changed is only affecting the result from the WordPress API  
service.

The reason its affecting you, is because, obviously, 3.0-alpha is NOT 3.0  
stable. doing 2.9 + = is also bad, as it wont affect 2.9.1, 2.9.2 etc.

Instead of doing version_compare() you should be checking to see if a  
function exists, for example:

if ( function_exists('some_WordPress3_functionality') ) {
   some_WordPress3_functionality(array(...));
} else {
  // Fall back to doing it the 2.9 way
  register_something();
   add_rewrite_rule(..)
}

Cheers
Dion Hulse / dd32

Contact:
  e: contact at dd32.id.au
  Web: http://dd32.id.au/


More information about the wp-testers mailing list