So I have had to edit some code of the template I am using because I need two widget areas in the header, I have managed to achieve it, but the problem comes when WordPress adds <div>
and <p>
between them and I do not want that because I need them in the same line, not in two lines.
This is what I have done so far:
Inside the file functions.php
I have added a new sidebar in the function envo_ecommerce_widgets_init()
just after the default sidebar for the header:
function envo_ecommerce_widgets_init() {
register_sidebar(
array(
'name' => esc_html__('Sidebar', 'envo-ecommerce'),
'id' => 'envo-ecommerce-right-sidebar',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-title"><h3>',
'after_title' => '</h3></div>',
)
);
register_sidebar(
array(
'name' => esc_html__('Top Bar Section', 'envo-ecommerce'),
'id' => 'envo-ecommerce-top-bar-area',
'before_widget' => '<div id="%1$s" class="widget %2$s col-sm-4">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-title"><h3>',
'after_title' => '</h3></div>',
)
);
register_sidebar( //this is the default sidebar for the header
array(
'name' => esc_html__('Header Section', 'envo-ecommerce'),
'id' => 'envo-ecommerce-header-area',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-title"><h3>',
'after_title' => '</h3></div>',
)
);
register_sidebar( //this is the sidebar I have added
array(
'name' => esc_html__('Centro cabecera', 'envo-ecommerce'),
'id' => 'envo-ecommerce-center-header-area',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-title"><h3>',
'after_title' => '</h3></div>',
)
);
register_sidebar(
array(
'name' => esc_html__('Footer Section', 'envo-ecommerce'),
'id' => 'envo-ecommerce-footer-area',
'before_widget' => '<div id="%1$s" class="widget %2$s col-md-3">',
'after_widget' => '</div>',
'before_title' => '<div class="widget-title"><h3>',
'after_title' => '</h3></div>',
)
);
}
Then I have added that new sidebar in the file template-part-topnav.php
which contains the whole structure for the header.
<?php if ( is_active_sidebar( 'envo-ecommerce-header-area' ) ) { ?>
<div class="site-heading-sidebar" >
<?php dynamic_sidebar( 'envo-ecommerce-center-header-area' ); ?> //this is the new sidebar I have just created
<?php dynamic_sidebar( 'envo-ecommerce-header-area' ); ?> //this is the default sidebar
</div>
<?php } ?>
The new widget area has been created sucessfully:
But when I add something to both widget areas, this is the result:
bbb
is inside the new widget area and aaa
is inside the default widget area.
If I inspect the website, this is the result:
As you can see, there are <div>
and <p>
between both widget areas and that prevents from placing both widget areas in the same line.
Is there a way to avoid this?
This is the template I am using in case you need it. Thank you in advance!
Note: When I say “default widget area” I mean, it is the widget area that came with the template by default.
Edit: The answer of @Manish Negi has fixed the issue but it only works when I add text. However, I want to place a slider and a login form in them and it is adding another space between them again…
I am using two plugins for that, MetaSlider and WordPress Login Form
I add the metaslider shortcode in the first widget area:
I add the WP login form in the second widget area:
And this is the result:
As you can see, it is adding again a space between the slider and the login form and I want them in the same line.
Advertisement
Answer
The WordPress text widget automatically converts text into paragraphs. Some CSS can help to get your result.
Replace your code into template-part-topnav.php
file
<?php if ( is_active_sidebar( 'envo-ecommerce-header-area' ) ) { ?>
<div class="site-heading-sidebar">
<div class="header-widget-1">
<?php dynamic_sidebar( 'envo-ecommerce-center-header-area' ); ?> //this is the new sidebar I have just created
</div>
<div class="header-widget-2">
<?php dynamic_sidebar( 'envo-ecommerce-header-area' ); ?> //this is the default sidebar
</div>
</div>
<?php } ?>
And add little CSS styling for this section
<style>
.header-widget-1, .header-widget-2{float:left;}
.site-heading-sidebar{clear:both;}
</style>
That’s it.