• wen.wainwright

    (@wenwainwright)


    Looking at the examples of several tutorials and the code in Twenty Thirteen I have come up with something that breaks my site. This is what I have in my child theme:

    In the header.php, any possible place, I have tried to add:
    <?php get_sidebar( 'sidebar-head' ); ?>

    along with this file I named sidebar-head.php:

    <?php
    /**
     * The sidebar containing the header widget area
     *
     */
    if ( is_active_sidebar( 'sidebar-head' ) ) : ?>
    	<div id="secondary" class="sidebar-container" role="complementary">
    		<div class="widget-area">
    			<?php dynamic_sidebar( 'sidebar-head' ); ?>
    		</div><!-- .widget-area -->
    	</div><!-- #secondary -->
    <?php endif; ?>

    And I have this to add to functions.php which breaks it:

    function twentythirteen_widgets_init() {
    	register_sidebar( array(
    		'name'          => __( 'Head Widget Area', 'twentythirteen' ),
    		'id'            => 'sidebar-head',
    		'description'   => __( 'Appears in the header section of the site.', 'twentythirteen' ),
    		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
    		'after_widget'  => '</aside>',
    		'before_title'  => '<h3 class="widget-title">',
    		'after_title'   => '</h3>',
    	) );
    }
    add_action( 'widgets_init', 'twentythirteen_widgets_init' );

    I have tried the above code with and without this:
    add_action( 'widgets_init', 'twentythirteen_widgets_init' );

    and with and without this: function twentythirteen_widgets_init() {

    I have also tried using both of those and neither of those (with and without the { })…any help would really be appreciated.

    **This is the site I’m working on, right now I’ve deleted all of that not working code above.

Viewing 8 replies - 1 through 8 (of 8 total)
  • Fabiana

    (@fabianapsimoes)

    Hey there,

    Why are you using the widgets_init hook? If you’re just trying to create a new sidebar, just registering it and creating its template should be enough.

    Check this guide for step-by-step instructions on how to create a new sidebar: https://codex.www.ads-software.com/Customizing_Your_Sidebar#New_way_of_adding_sidebars

    Hope that helps!

    Thread Starter wen.wainwright

    (@wenwainwright)

    Hmm. Not sure I’ve come across that tutorial specifically. I did think that, from what I did read, it seemed like there should be something that sounded more up to date. I’ll go try it.

    Thread Starter wen.wainwright

    (@wenwainwright)

    I followed those directions. Nothing broke. But the sidebar didn’t appear in the Appearance -> Widgets…? Any suggestions as to where I should look first to fix it now?

    In my functions.php:

    <?php if ( function_exists ('register_sidebar')) {
        register_sidebar ('head');
    } ?>

    In my sidebar-head.php:

    <?php
    /**
     * The sidebar containing the head widget area
     *
     * Displays on posts and pages.
     *
     * If no active widgets are in this sidebar, hide it completely.
     *
     */
    
    if ( is_active_sidebar( 'sidebar-head' ) ) : ?>
    	<div id="tertiary" class="sidebar-container" role="complementary">
    		<div class="sidebar-inner">
    			<div class="widget-area">
    				<?php dynamic_sidebar( 'sidebar-head' ); ?>
    			</div><!-- .widget-area -->
    		</div><!-- .sidebar-inner -->
    	</div><!-- #tertiary -->
    <?php endif; ?>

    And in the header.php just below:

    <header id="masthead" class="site-header" role="banner">
    
    <?php get_sidebar ('head'); ?>

    Not sure what’s wrong with either of the above but this works.
    In functions.php (child themed, obviously)

    //add a widget area in the header as described by TomHart
    if ( function_exists ('register_sidebar') )
    register_sidebar( array(
      'name' => __( 'Header Widgets Area', 'twentythirteen' ),
      'id' => 'sidebar-header',
      'description' => __( 'Header widgets area for my child theme.' ,  'twentythirteen' ),
      'before_widget' => '<aside id="%1$s" class="widget %2$s">',
      'after_widget' => '</aside>',
      'before_title' => '<h3 class="widget-title">',
      'after_title' => '</h3>',
    ) );

    and in header.php.

    <?php if ( !function_exists('dynamic_sidebar') ||
    !dynamic_sidebar('Header Widgets Area') ) :
     endif; ?>

    btw:

    no need to check for function_exists('dynamic_sidebar') – this exists since wp2.2.0

    unless you need to add any html wrapper container, the code can be simplified to:
    <?php dynamic_sidebar('Header Widgets Area'); ?>

    Yes, you are correct, you can add just <?php dynamic_sidebar('Header Widgets Area'); ?>to the appropriate spot in header.php – most likely between the closing tag on the site description and the opening tag on the navbar but it’s your child theme…do what you want;-)

    Hmm. Still can’t get this to work. The longer code for both header.php and functions.php breaks the site and the short code for just header.php doesn’t seem to do anything…

    If breaking the site means fatal erroor, most likely the php code is not valid…adding something to functions.php that doesn’t do anything (as you weren’t calling it anywhere) just wouldn’t do anything…if you can’t get it to work you could post your code.
    If breaking the site means making your beautiful site a mess, that’s a matter of some pretty creative html and especially css.

    And does anyone know how to order the widgets in admin…always bothers me and confuses users that the header widgets displayed this way are the last widgets displayed?

Viewing 8 replies - 1 through 8 (of 8 total)
  • The topic ‘Add Widget Area to Header Twenty Thirteen’ is closed to new replies.