if ( version_compare($wp_version, "3.0alpha", "<") ) {

this works fine greater than all 3.* version.
Its great documantation on php.net

You can test this example:

<?php
$tests = array(
        array('2.7.1' => '2.7.1'),

        array('2.7.1' => '2.7.2'),

        array('2.7.1' => '2.8-bleeding-edge'),

        array('2.8' => '2.8-bleeding-edge'),

        array('2.8alpha' => '2.8-bleeding-edge'),

        array('2.8-bleeding-edge' => '2.8.1'),

        array('2.8-bleeding-edge' => '2.7'),

        array('2.7-bleeding-edge' => '2.8-bleeding-edge'),

        array('2.8' => '2.8alpha'),

        array('2.8' => '2.8RC1-123456'),

        array('2.7' => '2.8alpha'),

        array('2.7.1' => '2.8alpha'),

        array('2.7.2' => '2.8alpha'),
);

function test_version_compare($first, $second) {

        $result = '-n.a.-';
        if (version_compare($first, $second, '<')) $result = 'is smaller';

        if (version_compare($first, $second, '>')) $result = 'is greater than';

        if (version_compare($first, $second, '==')) $result = 'is equal';       

        return $result;
}
?>
<table width="100%" style="text-align:center;">
<?php
foreach($tests as $test) {

        foreach($test as $first => $second) {
?>
        <tr>
                <td><?php echo $first; ?></td>

                <td><?php echo test_version_compare($first, $second); ?></td>

                <td><?php echo $second; ?></td>
        </tr>
<?php

        }
}

results:
2.7.1   is smaller      2.7.2
2.7.1   is smaller      2.8-bleeding-edge
2.8     is greater than         2.8-bleeding-edge
2.8alpha        is smaller      2.8-bleeding-edge

2.8-bleeding-edge       is smaller      2.8.1
2.8-bleeding-edge       is greater than         2.7
2.7-bleeding-edge       is smaller      2.8-bleeding-edge
2.8     is greater than         2.8alpha
2.8     is greater than         2.8RC1-123456
2.7     is smaller      2.8alpha

2.7.1   is smaller      2.8alpha
2.7.2   is smaller      2.8alpha

Best regards
Frank


On Mon, Jun 14, 2010 at 9:54 AM, Dion Hulse (dd32) <[email protected]>wrote:

> On Mon, 14 Jun 2010 17:48:52 +1000, Kim Parsell <[email protected]>
> 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: [email protected]
>  Web: http://dd32.id.au/
> _______________________________________________
> wp-testers mailing list
> [email protected]
> http://lists.automattic.com/mailman/listinfo/wp-testers
>
_______________________________________________
wp-testers mailing list
[email protected]
http://lists.automattic.com/mailman/listinfo/wp-testers

Reply via email to