Plugin Directory

Widget Logic

Why isn't it working?

Try switching to the WP default theme - if the problem goes away, there is something specific to your theme that may be interfering with the WP conditional tags.

The most common sources of problems are:

  • The logic text on one of your widgets is invalid PHP
  • Your theme doesn't call wp_head()
  • Your theme performs custom queries before calling the dynamic sidebar -- if so, try ticking the wp_reset_query option.

Widgets appear when they shouldn't

It might be that your theme performs custom queries before calling the sidebar. Try the wp_reset_query option.

Alternatively you may have not defined your logic tightly enough. For example when the sidebar is being processed, in_category('cheese') will be true if the last post on an archive page is in the 'cheese' category.

Tighten up your definitions with PHPs 'logical AND' &&, for example:

is_single() && in_category('cheese')

Another source of confusion is the difference between the Main Page and the front page

How do I get a widget to appear both on a category page and on single posts within that category?

Again, take care with your conditional tags. There is both an in_category and is_category tag. One is used to tell if the 'current' post is IN a category, and the other is used to tell if the page showing IS for that category (same goes for tags etc). What you want is the case when:

(this page IS category X) OR (this is a single post AND this post is IN category X)

which in proper PHP is:

is_category(X) || (is_single() && in_category(X)

See also: 'Writing Logic Code' in the Other Notes section.

Download

FYI

Compatibility beta

Your Setup

Log in to vote.

The Consensus (6 reporting)

100%
100,2,2
100,6,6

Average Rating

5 stars
4 stars
3 stars
2 stars
1 star
(87 ratings)