I am setting up a new WordPress blog and would like to include a widget in the content of a Page. I found some forums describing PHP hacks which appeared to apply to older versions. With WordPress 3.0.1 what is the best way to include a widget in a page?
2 Answers
This plugin might be the easy way. http://wordpress.org/extend/plugins/add-widgets-to-page/
But for a scratch method...
Look into Theme Twenty-Ten's functions.php file and find where the dynamic sidebars are registered. It looks like this:
<?php function twentyten_widgets_init() {
// Area 1, located at the top of the sidebar.
register_sidebar( array(
'name' => __( 'Primary Widget Area', 'twentyten' ),
'id' => 'primary-widget-area',
'description' => __( 'The primary widget area', 'twentyten' ),
'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
// Area 2, located below the Primary Widget Area in the sidebar. Empty by default.
register_sidebar( array(
'name' => __( 'Secondary Widget Area', 'twentyten' ),
'id' => 'secondary-widget-area',
'description' => __( 'The secondary widget area', 'twentyten' ),
'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
// Area 3, located in the footer. Empty by default.
//similar code as above
// Area 4, located in the footer. Empty by default.
//similar code as above
// Area 5, located in the footer. Empty by default.
//similar code as above
// Area 6, located in the footer. Empty by default.
//similar code as above
//Your Area 7, copy area 2 above and customize it
}
/** Register sidebars by running twentyten_widgets_init() on the widgets_init hook. */
add_action( 'widgets_init', 'twentyten_widgets_init' );
I've written in Area 7 above, as Twenty-Ten includes 6 widgetized areas. Copy all this into your theme's functions.php if it isn't there already, and delete or add what you need.
Use the following function call in your template file where you want to place your custom area 7:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(7) ) : endif; ?>
For example, create a template file in your theme directory, and use it as the default template for a page you create in WordPress. Go to Appearance->Widgets and drag widgets to your area 7 and they will appear on your page. If you need another widget area (dynamic sidebar), substitute the 7 for an 8>
This answer was created with the help of this post by a guy named Flynn
I've published a plugin called Widgets on Pages which allows easy definition and inline inclusion of widgets inside posts and pages. I think this would be of help