Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
VGSources
Blog

How to Show Different Sidebars on Posts and Pages in WordPress (Classic and Block Themes)

Set up separate WordPress sidebars for posts and Pages with classic-theme PHP, block-theme template parts, or a conditional-sidebar plugin, plus troubleshooting and testing steps.
WorldWordPress Length11 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a separate widget area or template part for posts and another for Pages, then load the correct one for the current request. Classic themes do this with registered sidebars, is_single()/is_page(), and either get_sidebar() or dynamic_sidebar(). Block themes use separate Site Editor template parts assigned to post and page templates. If editors need a different sidebar on individual posts, categories, custom post types, or archives, a conditional-sidebar plugin can apply those rules without custom PHP.

First identify which WordPress theme architecture you have

In WordPress terminology, a sidebar is any widgetized area supplied by a theme. It is not necessarily a column on the right: a theme can place the area on the left, below the content, or in a mobile section. The implementation depends on whether the site uses a classic theme or a block theme.

As an Amazon Associate I earn from qualifying purchases.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Approach Best fit How the choice is made What you maintain
Classic PHP templates Developers maintaining a classic theme Conditional PHP chooses a sidebar file or widget-area ID functions.php, template files, and registered widget areas
Block-theme template parts Sites managed in the Site Editor Post and page templates contain different Template Part blocks Template parts and templates in the Site Editor or the theme’s /parts folder
Conditional-sidebar plugin Editors who need per-content rules Dashboard conditions match posts, Pages, taxonomies, archives, and other requests Plugin settings and compatibility with the active theme

How to tell which one you are using

  • If the dashboard has Appearance → Widgets and the theme contains PHP templates such as single.php or page.php, it is a classic-theme workflow.
  • If the dashboard sends you to Appearance → Editor and the site is edited with templates and template parts, use the block-theme workflow.
  • If neither workflow exposes a usable sidebar, the theme may have no sidebar at all or may implement its layout with custom markup. Inspect the theme before adding code.

Classic themes: create separate post and page sidebars

The reliable pattern is to register two widget areas, give them stable IDs, assign widgets to each one, and select the appropriate area when WordPress renders a single post or a Page.

1. Register two widget areas

Add this to the active theme’s functions.php or, preferably, a site-specific functionality plugin. Do not edit a parent theme directly if updates will overwrite your changes.

<?php
add_action( 'widgets_init', function () {
    register_sidebar( [
        'name'          => 'Post Sidebar',
        'id'            => 'post-sidebar',
        'description'   => 'Widgets shown on individual blog posts.',
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
        'after_widget'  => '</section>',
        'before_title'  => '<h2 class="widget-title">',
        'after_title'   => '</h2>',
    ] );

    register_sidebar( [
        'name'          => 'Page Sidebar',
        'id'            => 'page-sidebar',
        'description'   => 'Widgets shown on individual Pages.',
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
        'after_widget'  => '</section>',
        'before_title'  => '<h2 class="widget-title">',
        'after_title'   => '</h2>',
    ] );
} );

The IDs, post-sidebar and page-sidebar, are the values code will use later. The visible names can be changed, but changing an ID after widgets have been assigned can make the old assignments appear to disappear.

2. Assign widgets in the dashboard

  1. Open Appearance → Widgets.
  2. Open Post Sidebar and add the widgets that belong beside posts, such as recent posts, categories, or a newsletter block.
  3. Open Page Sidebar and add the navigation, contact, or reference widgets intended for Pages.
  4. Save each widget and view one post and one Page in a logged-out browser window.

Registering an area does not display it by itself. A template must call it, and an area with no assigned widgets can legitimately render nothing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose how the classic theme loads the correct area

Option A: separate sidebar files with get_sidebar()

WordPress recognizes specialized files named sidebar-{name}.php. Create sidebar-post.php and sidebar-page.php in the theme directory.

<?php
// sidebar-post.php
if ( is_active_sidebar( 'post-sidebar' ) ) {
    dynamic_sidebar( 'post-sidebar' );
}
<?php
// sidebar-page.php
if ( is_active_sidebar( 'page-sidebar' ) ) {
    dynamic_sidebar( 'page-sidebar' );
}

Then put the selection in the template that controls the page layout, commonly single.php, page.php, or a shared template part:

<?php
if ( is_single() ) {
    get_sidebar( 'post' );
} elseif ( is_page() ) {
    get_sidebar( 'page' );
} else {
    get_sidebar();
}

get_sidebar( 'post' ) loads sidebar-post.php; get_sidebar( 'page' ) loads sidebar-page.php. The final get_sidebar() is a fallback for archives, search results, 404 pages, and any request that does not match either branch. If the theme has no default sidebar.php, replace that fallback with a registered area that you know exists.

Option B: keep one template and switch widget-area IDs

You can avoid multiple PHP files by rendering the registered areas directly:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
<?php
if ( is_single() ) {
    dynamic_sidebar( 'post-sidebar' );
} elseif ( is_page() ) {
    dynamic_sidebar( 'page-sidebar' );
} elseif ( is_active_sidebar( 'default-sidebar' ) ) {
    dynamic_sidebar( 'default-sidebar' );
}

dynamic_sidebar() accepts a registered sidebar’s ID or name. Using IDs is safer because visible names can be edited. Guarding the call with is_active_sidebar() prevents an empty wrapper from being printed when no widgets are assigned.

Put conditional tags in the right execution context

is_single() identifies an individual post, is_page() identifies a WordPress Page, and is_singular() covers singular content more broadly. These conditional tags depend on the main query. Run them in a template or at a later execution point, not at the top of functions.php before the query exists.

A common failure is placing the test inside a custom loop that has changed the global post context. The sidebar decision should normally happen in the main template, before a loop is replaced, or after the original query is restored. If a theme uses a custom controller or a page-builder layout, follow that theme’s documented insertion point instead of assuming single.php is used.

Use a specific Page rule when appropriate

The same conditional mechanism can target a particular Page rather than every Page. For example, a theme can branch on a Page ID, slug, or other value accepted by is_page(), then render a third registered area. Keep those exceptions close to the general post/Page branch and retain a fallback for all other requests. When many exceptions accumulate, a plugin is easier for editors to maintain.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Block themes: use template parts instead of widget areas

Block themes do not expose traditional widget areas in the same way classic themes do. Their layout is built from blocks, templates, and reusable template parts in the Site Editor. Do not look for a PHP dynamic_sidebar() call unless the theme explicitly includes a classic compatibility layer.

1. Create two sidebar template parts

In the Site Editor, open Appearance → Editor → Patterns → Template parts (the exact grouping can vary by WordPress release), create a post-sidebar part and a page-sidebar part, and add the desired blocks to each. A theme stores file-based parts in its /parts directory, for example:

<!-- parts/sidebar-posts.html -->
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">
    <!-- wp:heading --><h2>From the blog</h2><!-- /wp:heading -->
    <!-- wp:latest-posts /-->
</div>
<!-- /wp:group -->
<!-- parts/sidebar-pages.html -->
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">
    <!-- wp:heading --><h2>Explore this site</h2><!-- /wp:heading -->
    <!-- wp:navigation /-->
</div>
<!-- /wp:group -->

When editing through the Site Editor, WordPress writes the equivalent block markup for you. The examples illustrate the important distinction: each part has its own slug and its own block content.

2. Insert the relevant part in each template

Edit the single-post template and place a Template Part block where the post sidebar belongs. Its serialized markup is:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
<!-- wp:template-part {"slug":"sidebar-posts"} /-->

Edit the Page template and insert:

<!-- wp:template-part {"slug":"sidebar-pages"} /-->

Use the editor’s visual controls when possible so the part name and area are saved consistently. Keep the post and Page templates structurally similar if they share the same responsive grid, changing only the sidebar part. This avoids a situation where the right content is selected but the column disappears at a breakpoint.

When static assignment is not enough

Separate templates solve the normal “posts versus Pages” requirement. More complex rules—such as selecting a part by taxonomy, custom post type, or a set of individual records—may require dynamic template-part loading or theme code. A 2026 WordPress Developer Blog article documents a dynamic approach for choosing template parts based on the page being viewed. Treat that as an advanced theme-development pattern: establish the static templates first, then add dynamic selection only when the editorial rule cannot be represented by template assignments.

No-code assignment with a conditional-sidebar plugin

A plugin is appropriate when non-developers must assign sidebars to individual posts and Pages, or when the rules extend to categories, tags, custom post types, taxonomies, archives, search, and 404 pages.

Content Aware Sidebars

Content Aware Sidebars documents conditions for posts, Pages, custom post types, categories, tags, taxonomies, templates, archives, search results, and 404 pages. It can replace, merge, or hide an existing theme sidebar. A typical setup is:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Install and activate the plugin from Plugins → Add New.
  2. Create a new sidebar configuration and give it an editor-friendly name.
  3. Choose the content conditions, such as a specific Page, a post category, or an archive.
  4. Add the widgets or blocks that should appear for that condition.
  5. Choose whether the configured sidebar replaces, merges with, or hides the theme’s existing sidebar.
  6. Preview a matching URL and a non-matching URL to verify both the rule and the fallback.

Custom Sidebars

Custom Sidebars documents custom widget configurations for individual posts and Pages, categories, post types, and archive pages. Its dashboard-oriented model is useful when editors need to change assignments without touching PHP. Build one configuration at a time, test precedence when multiple rules could match, and document which rule owns a shared archive.

Check compatibility before deployment

Plugin listings describe capabilities, not guaranteed behavior for every theme. Confirm that the plugin supports the active WordPress and PHP versions, test its output with the theme’s responsive layout, and check whether caching or a page-builder layer serves stale sidebar markup. Keep a backup and test on a staging copy before replacing the site’s default sidebar.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How to choose among the three methods

Your requirement Most suitable method Reason
Exactly one sidebar for all posts and another for all Pages Classic conditional PHP or block templates The rule is simple and predictable.
Editors must assign a unique sidebar to selected posts or Pages Conditional-sidebar plugin Assignments remain in the dashboard instead of code.
The site already uses a block theme Template parts in the Site Editor It follows the theme’s native architecture and responsive layout.
Different sidebars for categories, tags, custom post types, archives, search, and 404 pages Conditional-sidebar plugin or extensive theme logic Multiple conditions are easier to inspect and change in a rule interface.
The theme has no registered sidebar or custom page layout Theme-specific development Adding a widget area alone cannot create a column the theme never renders.

Troubleshoot a missing or incorrect sidebar

“Appearance → Widgets” is missing

Check the theme type first. Block themes use the Site Editor and template parts rather than the classic Widgets screen. Switch to Appearance → Editor, edit the relevant post or Page template, and insert the appropriate Template Part block.

The sidebar area is blank

  • Confirm that the registration code runs on the active theme or functionality plugin.
  • Verify that widgets are assigned to the exact ID passed to dynamic_sidebar().
  • Check is_active_sidebar() and remove any accidental whitespace or typo in the ID.
  • For a block theme, open the template part itself and confirm that it contains visible blocks and is used by the template currently being viewed.

is_page() or is_single() always returns false

Move the check into the template or a hook that runs after the main query. Also check that a custom loop has not replaced the global query context. Test a normal post and a normal Page directly before debugging a page-builder or caching layer.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The wrong sidebar appears

Inspect the actual template hierarchy and verify that the file you edited is being loaded. In a classic theme, confirm the spelling of sidebar-post.php and sidebar-page.php, and remember that get_sidebar( 'post' ) maps to the former. In a block theme, inspect the slug in the Template Part block and the slug of the file or editor-created part.

Archives, search, or 404 pages have no sidebar

Those requests are neither an individual post nor a Page, so they fall through the two main branches. Add an explicit archive/search/404 rule or retain a default sidebar fallback. Test each request type rather than assuming the post sidebar should be reused.

The theme has no place to render a sidebar

A registered widget area is only a storage and rendering target. If the theme’s templates never call it, no widgets can appear. Add the call to the correct layout template, create a compatible block-template column, or choose a theme architecture that includes a sidebar.

Test the result before publishing

  1. Open a published post while logged out and confirm the post sidebar’s widgets, heading styles, and links.
  2. Open a published Page and confirm that only the Page sidebar appears.
  3. Check a category or other archive, a search result, and a 404 URL to verify the fallback.
  4. Resize the browser and test a phone-sized viewport; a sidebar may move below the content or be hidden by the theme’s responsive rules.
  5. Clear page-cache and object-cache layers after changing assignments, then retest in a private window.
  6. If a plugin controls the rules, test a URL that matches two conditions and verify which rule wins.
  7. Check keyboard navigation, heading order, and contrast after replacing navigation or call-to-action widgets.

Practical design and maintenance guidance

Keep the post sidebar focused on discovery—related categories, recent posts, or a series navigation—while a Page sidebar can emphasize permanent navigation, contact details, or documentation links. Avoid duplicating the same heavy widget in both areas unless it serves a clear purpose. Give each registered area and template part a descriptive name so another administrator can understand its scope without opening code.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a fallback deliberately. A site that renders no sidebar on an uncategorized archive may look broken even though the post and Page branches work perfectly. Conversely, forcing the post sidebar onto every request can expose irrelevant navigation on search and error pages. Define the behavior for unmatched requests and record it in the theme or plugin notes.

Finally, treat sidebar selection as a layout change, not only a content change. Verify widths, margins, sticky positioning, mobile stacking, analytics events, and accessibility after switching the sidebar source. The correct conditional can still produce a poor result if the replacement widgets do not fit the theme’s markup or responsive grid.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.