How could a Widget behave differently depending on sidebar

All we need is an easy explanation of the problem, so here it is.

if sitting on sidebar-1, I need my widget to behave differently than if it were on sidebar-2. How can i detect the sidebar it is sitting on from within the widget() function?

The widget contains a list of links to posts. Depending on which sidebar, it should use a different custom image size version of its thumbnail.

So what will change is the thumbnail size reference name.
For instance, in one sidebar, “xs-square-thumb” will be used; in another “L-square-thumb” will be used.

Ex: get_the_post_thumbnail($post->ID,'xs-square-thumb');

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

there isnt a clean way of handling this, since there isn’t a conditional for checking which sidebar is in use, just whether or not it exists. however, you could do the following:

  1. make two different versions of the widget (which would make it “future proof” in regards to what widget names could exist).

  2. add a checkbox to the widget options to choose which size image to use.

Method 2

You can check the ‘id’ variable that is passed in the $args variable in the widget() function, it will give you the id of the widgitized area it is currently in.

ex:

public function widget($args, $instance) {
  if( $args['id'] == 'sidebar-1' ) {
    //do sidebar stuff
  } else {
    //default behavior
  }
}

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply