Widget Area Above Single Posts
Registers a "Before Post Content" widget area and shows its widgets at the top of every blog post, ideal for notices, ads or a table of contents widget.
Opens WPIDE on
Code
add_action( 'widgets_init', function () {
register_sidebar( array(
'name' => 'Before Post Content',
'id' => 'wpide-before-content',
'description' => 'Shown above the content of single posts.',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
} );
add_filter( 'the_content', function ( $content ) {
static $running = false;
if ( $running || ! is_singular( 'post' ) || ! in_the_loop() || ! is_main_query() || ! is_active_sidebar( 'wpide-before-content' ) ) {
return $content;
}
$running = true;
ob_start();
dynamic_sidebar( 'wpide-before-content' );
$widgets = ob_get_clean();
$running = false;
return '<div class="wpide-before-content-widgets">' . $widgets . '</div>' . $content;
}, 5 );
Notes
Add widgets under Appearance > Widgets. Nothing is printed while the area is empty.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.