Support » Plugins and Hacks » Lazy Widget Loader » [Plugin: Lazy Widget Loader] Conflict with Widget Logic and work-around

  • Resolved Mike

    (@maddogmike)


    After installing & activating the plugin, when I went to the Widgets section of the wp-admin panel, the following error was displayed at the top of the screen:

    Warning: Cannot use a scalar value as an array in /home/user/public_html/wp-content/plugins/lazy-widget-loader/lazy-widget-loader.php on line 471

    Turns out it’s a conflict with the Widget Logic plugin, which I had already installed and activated. Well, there’s a simple work-around. Deactivate both plugins, activate Lazy Widget Loader first, then activate Widget Logic second. Works fine as long as you activate in that order!

    http://wordpress.org/extend/plugins/lazy-widget-loader/

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Author itthinx

    (@itthinx)


    Thanks for your feedback Mike, that’s interesting …

    This is line 471 in the current revision:

    $wp_registered_widget_controls[$id]['params'][0]['lazy-widget-loader-widget-id'] = $id;

    Actually it’s not an error but a warning, anyhow, I wonder what happens here. I’ll take a closer look and get back when I find out.

    Plugin Author itthinx

    (@itthinx)


    Looks like Widget Logic assumes to use an id if it doesn’t recognize $wp_registered_widget_control[$id][‘params’][0] as an array, this is from widget_logic.php:

    function widget_logic_expand_control() {
    
    ...
    
    		if (!array_key_exists(0,$wp_registered_widget_controls[$id]['params'])  || is_array($wp_registered_widget_controls[$id]['params'][0]))
    			$wp_registered_widget_controls[$id]['params'][0]['id_for_wl']=$id;
    		else
    		{	// some older widgets put number in to params directly (which messes up the 'templates' in WP2.5)
    			array_push($wp_registered_widget_controls[$id]['params'],$id);
    			$wp_registered_widget_controls[$id]['height']+=40;					// this is really a pre2.5 thing - discard?
    		}
    
    ...
    
    }

    The condition to set $wp_registered_widget_controls[$id][‘params’][0][‘id_for_wl’] is a logical implication:

    The key 0 does not exist in $wp_registered_widget_controls[$id][‘params’] OR $wp_registered_widget_controls[$id][‘params’][0] is an array.

    and seems to be motivated to make things compatible with WP2.5? Hmmm … Lazy Widget Loader doesn’t want to be compatible with anything prior 3.0 and requires $wp_registered_widget_controls[$id][‘params’][0] to be an array. That’s where the hiccup comes up 🙂

    Without digging deeper … as both plugins add their stuff to widget controls, if you let Lazy Widget Loader do it first (*) it won’t care about what Widget Logic does after, because it doesn’t get affected by it.

    (*) by installing it first it get’s a chance to add its handlers before Widget Logic does

    Mike

    (@maddogmike)


    Darn, I’m still getting that “Cannot use a scalar value as an array” warning. On my other WP site, my trick of activating Lazy Widget Loader first, then activating Widget Logic second eliminated the warning. But on this site, I’m getting that warning even if I leave Widget Logic deactivated. I’m wondering if I may need to delete Widget Logic entirely and reinstall. I’ll try to bring in the Widget Logic author into the discussion.

    Plugin Author itthinx

    (@itthinx)


    After testing on WP 3.2.1 with Widget Logic 0.48 and Lazy Widget Loader 1.1.0 I could not reproduce the Warning. See also my comment here: http://www.itthinx.com/plugins/lazy-widget-loader/#comment-173

    Looks like something else is interfering here … AFAICS the Warning is thrown because at some place the parameter is turned into a scalar when it’s supposed to be an array. So, I suppose there’s another plugin interfering …

    Plugin Author itthinx

    (@itthinx)


    I’ve just released an update of the plugin (1.2.1) which should avoid any issues related to the warning reported.

    If anyone encounters further issues, needs help or is curious about the whys and whats involved, please get in touch with me.

    Many thanks to Mike at Intown Elite who kindly provided lots of valuable feedback and help in resolving this issue.

    Plugin Author itthinx

    (@itthinx)


    In order to centralize support for this plugin, please direct any further comments at the plugin’s page:

    Feedback is welcome!

    If you need help, have problems, want to leave feedback or want to provide constructive criticism, please do it at the Lazy Widget Loader plugin page.

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘[Plugin: Lazy Widget Loader] Conflict with Widget Logic and work-around’ is closed to new replies.