One of the easiest ways to control which WordPress Widgets display on a particular place, there is a great WordPress Plugin called Widget Logic. There used to be a more non-technical tool called Widget Logic Visual, but of WordPress v3.5 the visual version no longer works.
Step 1: Go to Appearance > Widgets
Step 2: Add your new widget or open the widget you’d like to add logic to. Once the widget is opened look to the section at the bottom of the widget just above the SAVE button.
Step 3: Adding Logic
Inside that widget logic space we can put some commands to set where this widget displays. The above example is using
is_page() command… this is telling this widget to only display on pages, not single posts, categories etc, just pages.
Here is a short list of the commands that can be added to the widget logic box.
is_home()— just the main blog page
!is_page('about')— everywhere EXCEPT this specific WP ‘page’
!is_user_logged_in()— shown when a user is not logged in
is_category(array(5,9,10,11))— category page of one of the given category IDs
is_page(array(7,12,18,24))— page of one of the given page IDs
In the last 2 bullets you’ll notice a bunch of numbers separated by commas. Those are ID #’s. If you only wanted a widget to display on a set of particular pages or categories you use the appropriate command and list the ID’s of the pages. Now you are probably asking yourself how to find the ID, check out the following tutorial which explains just how to Find a Page or Post ID in WordPress.
For a more command examples visit the Widget Logic page.