[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