- 2010-02-28 (日) 9:24
- 技術
以前、Wordpressのウィジェットを複数にしたテーマ作成について(の正しい情報)というエントリを書いたわけだが、似たようなことをまた仕事でやっていて気づいたことなどをメモ。
簡単に言うと、PHPには配列…というよりハッシュの加算を使うと、同じキーに対する値が…上書き…されない。という仕様がある。
これを使って、共通の部分は別の配列に書いておいて、それと足し合わせることで記述を減らせるって訳です。
ややよろしくない仕様のような気がするけど、まぁソース見てくださいな。
if ( function_exists('register_sidebars') ){
$widget_config_base = array(
'name' => 'Base',
'before_widget' => '<div id="%1$s " class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
);
register_sidebars(1,array(
'name' => 'North',
'before_widget' => '<div id="%1$s " class="widget widget-north %2$s">'
)+$widget_config_base);
register_sidebars(1,array(
'name' => 'West',
'before_widget' => '<div id="%1$s" class="widget widget-west %2$s">',
)+$widget_config_base);
register_sidebars(1,array(
'name' => 'East',
'before_widget' => '<div id="%1$s" class="widget widget-east %2$s">',
)+$widget_config_base);
register_sidebars(1,array(
'name' => 'South',
'before_widget' => '<div id="%1$s" class="widget widget-south %2$s">',
)+$widget_config_base);
}
こんな感じで書けます。この例はあちこちのブログで見かける1列に4つのブロックがあるウィジェット構成ですね。vicunaあたりでも使われてた気がします。気のせいかも。
で、僕も最初戸惑ったんですよ。分かるよね?普通は
register_sidebars(1,$widget_config_base+array(
'name' => 'South',
'before_widget' => '<div id="%1$s" class="widget widget-south %2$s">',
));
}
…って書きたくなるよね?
まぁ…いいや。こういうものです。
これについてはarray_mergeと「+」による配列の加算の違い【PHP】 – Programming Magicが詳しいので参照すると良いです。
Comments:0
Trackbacks:1
- Trackback URL for this entry
- http://blog.s-satoshi.net/tech/wordpress_register_sidebars/trackback/
- Listed below are links to weblogs that reference
- wordpressのウィジェット複数指定をする時に使える良い感じの書き方 from S.Satoshiのブログ
- trackback from futuremix 10-04-12 (月) 7:22
-
WordPress テーマのウィジェット対応
このサイトでは独自の WordPress テーマを使っています。WP ME 2.1 時代のクラシックテーマを元に、標準的な HTML +CSS 対応や SEO の強化などを行なったものですが、そのまま使い続けていたた…