Sometimes we have to hide or show widgets on certain Pages, Posts or Categories to show up different content, affiliate ads or a poll on a particular page or a category. This can be achieved via using WordPress Conditional Tags, but there are also plugins that do the same job without code. Widget Options and Block Visibility can both hide or show content on chosen pages, posts and categories.
A note before you start: Widget Logic, which this article originally recommended, was permanently removed from the WordPress plugin directory in April 2026. If it is still active on your site, replace it with one of the options below and delete it.
1. Widget Options
Widget Options is the maintained equivalent of Widget Logic. It adds visibility controls to every widget, so you can show or hide it by page, post, category, post type, device or user role, and it also accepts raw conditional-tag logic if you prefer to write it yourself. If your site uses the block editor for its sidebars rather than classic widgets, Block Visibility does the same thing for blocks.- The 'Widget logic' field at work in standard widgets.
- The
widget_contentfilter andwp_reset_queryoptions are at the foot of the widget admin page. (Both are off by default.)
- is_single() to display the widget only on single pages is_home() to display the widget only on home page
- is_single(12) to display the widget on the post ID 12. The post ID is nothing but a unique number that was allocated to a blog post. So how to find the post? Simple one of my fellow blogger have blogged about it, just head over there.
- !is_home() to display the widget on all the places except the homepage.
- strpos($_SERVER['HTTP_REFERER'], “google.com”)!=false to display the widget for visitors who comes through Google. You can try the same step to replace Google.com with Facebook.com if you want to have a greetings message for Facebook users.
- is_single(‘Blogger Tips’) to display the widget on the post titled Blogger Tips. This indirectly helps you in adding a suitable affiliates ads for certain pages.
- is_page(‘contact’) to display the widget only on a particular page contact. You can change the value “contact” to any page name of your wish.
- is_category(array(5,9,10,11)) to display the widget only for certain category classified by category numbers*. You can even use single category numbers to hide or show widgets.
- is_user_logged_in() to display the widget only for logged in users.











Responses (0 )