Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Using Wordpress 3.8.1 with 'Twenty Fourteen' theme I'd like to arrange my post in such a way that it's main contents go to main (center) column while galleries, attached files and links pertaining to this post go to content sidebar to the right. How can I do that? Do I need some specific plugins?

Right now I can place in the content sidebar only site-specific widgets. I think that sidebar named 'content' and visually placed and styled like post should display post-specific widgets but I'm unable to force it to that.

share|improve this question

migrated from webapps.stackexchange.com Feb 23 at 11:21

This question came from our site for power users of web applications.

1  
The content sidebar are just a normal sidebar like all the others. The creator of twenty fourteen just gave it that name. It behaves and works just like the footer sidebar and the main sidebar. To do what you want you will have to code a widget specifically for that. –  Pieter Goosen Feb 23 at 11:29

2 Answers 2

You can install a plugin like widget visibility or Widget Logic which enables you to add conditional tags to specify which posts, pages etc your widgets display.

Otherwise, you would need to add the conditional tags to your themes native sidebar widget area's to control which posts, pages etc they display.

Example:

If you only wanted your widget to display on single posts, you would add the conditional tag:

is_single()

or

is_singular('post')

To exclude widgets from displaying on single posts, you would use the same conditional tag like this:

!is_single()

See this code example if you want to code your own custom sidebar widgets.

You can register the widget in your child themes functions file then hook it in directly in any template file or by using a custom functions in your child themes functions file.

Registers a new widget

add_action( 'widgets_init', 'wpsites_add_widget' );

function wpsites_add_widget() {

register_sidebar(array(
'name'=>'Custom Widget',
'id' => 'custom-widget',
));
}

Add to template file like single.php

<?php if ( is_active_sidebar( 'custom-widget' ) ) : ?>
<ul id="sidebar">
<?php dynamic_sidebar( 'custom-widget' ); ?>
</ul>
<?php endif; ?>

Source http://codex.wordpress.org/Function_Reference/dynamic_sidebar

share|improve this answer

While the logic can get complicated, you can control the display of widgets to a significant degree using the widget_display_callback filter.

For example, this will allow only the Core Text widget to be displayed in the sidebar with ID "sidebar-1" :

add_filter(
  'widget_display_callback',
  function ($instance, $widget, $sidebar){
    if (
      is_single()
      && 'sidebar-1' === $sidebar['id']
    ) {
      if ('WP_Widget_Text' !== get_class($widget)) {
        return false;
      }
    }
    return $instance;
  },
  10,3
);
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.