WordPressのサイドバーウィジェット(widget)をh2からh3に変更

WordPress にはサイドバーを便利に使えるようにするウィジェット(widget)があり、テーマによっては初めからウィジェットに対応したものも多く見受けられます。

このウィジェットのメニュータイトルですが、デフォルトでは h2 のため、個人的にあまり好きではありません。 そこでこの h2 を h3 になるようカスタマイズをおこないます。


Sponsored Link

手っ取り早い方法は wp-includes/widgets.php を直接編集。

554行目と1296行目の2か所。 WordPress 2.9.2 を使用。

function register_sidebar($args = array()) {
	global $wp_registered_sidebars;
	if ( is_string($args) )
		parse_str($args, $args);
	$i = count($wp_registered_sidebars) + 1;
	$defaults = array(
		'name' => sprintf(__('Sidebar %d'), $i ),
		'id' => "sidebar-$i",
		'description' => '',
		'before_widget' => '<li id="%1$s" class="widget %2$s">',
		'after_widget' => "</li>\n",
		'before_title' => '<h2 class="widgettitle">',
		'after_title' => "</h2>\n",
	);
function the_widget($widget, $instance = array(), $args = array()) {
	global $wp_widget_factory;
	$widget_obj = $wp_widget_factory->widgets[$widget];
	if ( !is_a($widget_obj, 'WP_Widget') )
		return;
	$before_widget = sprintf('<div class="widget %s">', $widget_obj->widget_options['classname']);
	$default_args = array('before_widget' => $before_widget, 'after_widget' => "</div>", 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>');
	$args = wp_parse_args($args, $default_args);
	$instance = wp_parse_args($instance);
	$widget_obj->_set(-1);
	$widget_obj->widget($args, $instance);
}

編集には サクラエディタ の検索・置き換えを使用。

function register_sidebar($args = array()) {
	global $wp_registered_sidebars;
	if ( is_string($args) )
		parse_str($args, $args);
	$i = count($wp_registered_sidebars) + 1;
	$defaults = array(
		'name' => sprintf(__('Sidebar %d'), $i ),
		'id' => "sidebar-$i",
		'description' => '',
		'before_widget' => '<li id="%1$s" class="widget %2$s">',
		'after_widget' => "</li>\n",
		'before_title' => '<h3 class="widgettitle">',
		'after_title' => "</h3>\n",
	);
function the_widget($widget, $instance = array(), $args = array()) {
	global $wp_widget_factory;
	$widget_obj = $wp_widget_factory->widgets[$widget];
	if ( !is_a($widget_obj, 'WP_Widget') )
		return;
	$before_widget = sprintf('<div class="widget %s">', $widget_obj->widget_options['classname']);
	$default_args = array('before_widget' => $before_widget, 'after_widget' => "</div>", 'before_title' => '<h3 class="widgettitle">', 'after_title' => '</h3>');
	$args = wp_parse_args($args, $default_args);
	$instance = wp_parse_args($instance);
	$widget_obj->_set(-1);
	$widget_obj->widget($args, $instance);
}

これでウィジェットのメニュータイトルは h3 になりました。

まぁ、コレでも良いのですが WordPress がバージョンアップするたびに wp-includes の widgets.php を編集しないといけないので少し面倒かもしれませんね。

それでは functions.php を使って h2 が h3 になるようカスタマイズしてみます。

functions.php がなければ新規に作成してください。

<?php
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' =>'</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
));
}
?>

上記の設定で h2 のタグが h3 タグに変わりました。 ただしコレはサイドバー1つの時の設定なので、2つになれば記述も変わると思います。 また、当ブログにおける記述なのでサイドバーに用いてるタグが違えば上記記述も変わります。

ちなみに以下が当ブログの sidebar.php 。

<div id="sidebar">
<ul>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
         </ul>
    <?php endif; ?>
</ul>
</div>

functions.php を使わないやり方もあるかもしれません。

Sponsored Link

One thought on “WordPressのサイドバーウィジェット(widget)をh2からh3に変更

コメントを残す