WP笔记

WordPress Sidebar命名问题

一直以为wordpress的sidebar名字可以随便起,原来不行!类似Sidebar 1,、Sidebar 2的名字要慎用,如果一定要用,那必须是在确认这几个sidebar在顺序上确实是第一个、第二个。。。,否则即使指定了id,也没用!

如果代码是这样

register_sidebar( array(
		'name' => __( 'Sidebar 1', 'twentyeleven' ),
		'before_widget' => '


",
		'before_title' => '

', 'after_title' => '

', ) );

而Sidebar 1并不是第一个Sidebar,就会出现问题,假设第一个sidebar叫Top Sidebar,那就会出现Top Sidebar和Sidebar 1内容相同的情况

观察一下WordPress默认主题的代码,是这样写的

register_sidebar( array(
		'name' => __( 'Main Sidebar', 'twentyeleven' ),
		'id' => 'sidebar-1',
		'before_widget' => '


",
		'before_title' => '

', 'after_title' => '

', ) );

代码中指定id为sidebar-1,slug也就是sidebar-1,即使不指定,slug也会按照sidebar的先后顺序命名为sidebar-1,sidebar-2等,并且这些会影响Wordpress Sidebar的内容,如果某个sidebar被命名为Sidebar-[number],就可能出现比较奇怪的现象:前台sidebar内容和后台sidebar不符,如果不小心保存了某个sidebar,那辛辛苦苦建立的sidebar内容就会被搞乱或者丢失。

如果不幸出现这种情况,只要将命名更正,sidebar丢失的内容就可以找回来,那些丢失的widget都回到了inactive widget里。