[wp-testers] update_option() not always working in WP 3.0 beta 2

Dion Hulse (dd32) wordpress at dd32.id.au
Thu May 20 12:18:35 UTC 2010


No I didnt test with any plugins, You can try deactivating the plugin to  
see if it makes a difference.
My point was, I cant see it being caused by WordPress, The comparisons  
made using either == or === in this case should show the objects as  
different, and due to it working for me, I dont personally think its a  
change that has been made.

If you can provide a SVN revision range where it did work, and where it  
doesnt work (narrowed down as much as possible) it'd obviously help to see  
what may've changed.


On Thu, 20 May 2010 20:49:38 +1000, andrea <andrea at blogsweek.com> wrote:

> Hello Dion,
>
> thank you for your feedback. I'm running an out-of-the-box WP install,  
> without
> additional caching, on PHP 5.2.0. The only difference between the working
> environment and the non-working one is:
>
> working: WP 2.9.2
> non-working: WP 3.0 beta 2
>
> so I was suspecting a change in WP 3.0 options caching, made before or  
> with
> svn13807 - 2010.03.23 @ 20.03.
>
> Were you able to run Menubar 4.7? To replicate the problem, you only  
> need to
> install it, create a menu, add a menu item, and reload the admin page.  
> With WP
> 2.9.2 the menu item is still there, with WP 3.0 beta 2 the new menu item  
> goes
> away, because the underlying option is not updated in the DB.
>
> Thank you
> Andrea
>
>
> Quoting "Dion Hulse (dd32)" <wordpress at dd32.id.au>:
>
>> Sounds like you've run into either:
>>   a. a Bug with PHP
>>   b. a Bug in a Caching layer you've got enabled
>>
>> This exact code works for me:
>>
>>
>> $option_name = 'test';
>>
>> $value = (object) array('test' => true);
>> $value->var1 = 1;
>> update_option ($option_name, $value);
>> $value->var2 = 2;
>> update_option ($option_name, $value);
>> $value->var3 = 3;
>> update_option ($option_name, $value);
>>
>> var_dump(get_option($option_name));
>> delete_option($option_name);
>>
>> Resulting in:
>> object(stdClass)#278 (4) { ["test"]=> bool(true) ["var1"]=> int(1)
>> ["var2"]=> int(2) ["var3"]=> int(3) }
>>
>> Thats running the latest SVN edition, and PHP 5.3.1
>>
>> Checking  
>> http://www.php.net/manual/en/language.oop5.object-comparison.php
>> confirms that the existing code should work as expected.
>>
>>
>> On Thu, 20 May 2010 05:43:42 +1000, andrea <andrea at blogsweek.com> wrote:
>>
>> > Hi all,
>> >
>> > In a plugin I store an object in an option, and the typical flow is as
>> > follows:
>> >
>> > $value = get_option ($option_name);
>> > $value->var1 = $new_var1;
>> > update_option ($option_name, $value);
>> > $value->var2 = $new_var2;
>> > update_option ($option_name, $value);
>> > $value->var3 = $new_var3;
>> > update_option ($option_name, $value);
>> >
>> > and so on. That used to work fine with WP 2.9.2, both with PHP4 and  
>> PHP5.
>> >
>> > With WP 3.0 beta 2 and PHP4, no problem.
>> >
>> > With WP 3.0 beta 2 and PHP5, apparently only the first update_option()
>> > call is
>> > honored, and following calls are not honored because update_option()
>> > finds that
>> >
>> > $newvalue === $oldvalue (lines 503-504 in wp-includes/functions.php)
>> >
>> > and does not update the database. If I remove those two lines, the
>> > plugin works
>> > again. If in my code I replace
>> >
>> > update_option ($option_name, $value);
>> >
>> > with
>> >
>> > update_option ($option_name, 0);
>> > update_option ($option_name, $value);
>> >
>> > the plugin works as well.
>> >
>> > According to a user report I received, the problem was first noted in
>> > WordPress 3.0 alpha (svn13807 – 2010.03.23 @ 20.03).
>> >
>> > Is this issue already known? Or am I missing something? If interested,
>> > the
>> > plugin that stopped working in WP 3.0 is Menubar 4.7.
>> >
>> > Thank you all
>> > Andrea
>> >
>> > Andrea Tarantini
>> > www.blogsweek.com
>> > www.dontdream.it
>> >
>> >
>> > _______________________________________________
>> > wp-testers mailing list
>> > wp-testers at lists.automattic.com
>> > http://lists.automattic.com/mailman/listinfo/wp-testers
>> >
>>
>>
>> --
>> Dion Hulse / dd32
>> Contact:
>>   e: contact at dd32.id.au
>>   Web: http://dd32.id.au/
>> _______________________________________________
>> wp-testers mailing list
>> wp-testers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-testers
>>
>
>
>
>
> _______________________________________________
> wp-testers mailing list
> wp-testers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-testers
>


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


More information about the wp-testers mailing list