Common use snippets for Widget Logic
Widget Logic is a WordPress plugin that that gives every widget an extra control field called “Widget logic” that lets you control the pages that the widget will appear on. The text field lets you use WP’s Conditional Tags, or any general PHP code.
I’ve been using Widget Logic in my WordPress projects for a while now – it’s clean, versatile and I highly recommend it.
Below are some snippets that you will likely find useful when you are building a new site.
Show widget only on specific pages or posts
This example displays the widget only on the page that has the slug example-page
This is my favourite way of specifying widgets for certain pages, as it works in a similar fashion to how you configure blocks for specific paths in Drupal.
This example displays the widget on pages with ID 1 and 5.
is_page() is very flexible and can take id’s, page names, slugs and even arrays with multiple values – see the documentation.
But what about blog posts and attachments?
Use is_single() instead – see the documentation.
Here is an example that display the widget when the user is visiting a post with the title “About this blog”
is_single('About this blog')
Show widget everywhere except a specific page or post.
This is the inverse of the previous examples, so the first example would be:
Note the exclamation point, which inverts the logic.
The second example would be:
Show widget only on front page
Handy for front page-specific summary widgets, calendars, introductions etc.
Show widget only for a specific post type
An easy way to display widgets for certain post types.
Some common post types
Show widget based on a WPML language
If you are running a site using the WordPress Multilingual Plugin (WPML) you can use this snippet to only show a widget when the user is viewing the page in a certain language (English in this case)
(ICL_LANGUAGE_CODE == 'en')
There are more useful constants and functions available in the WPML manual.
Combining multiple rules
It’s easy to combine multiple rules with regular PHP logic. This example will display the widget only when the user is viewing a site in Swedish (WPML) and is on the pages with ID 1 or 5:
(ICL_LANGUAGE_CODE == 'sv') && is_page(array(1,5))
Don’t forget you can also use the || (or) operator!
More useful tags
I recommend reading the WordPress documentation on Conditional Tags to customize Widget Logic for your exact needs.
Do you have a useful snippets for Widget Logic? Feel free to post it in the comments!