使 WordPress 主题支持 Widget

Jul 27th, 2008 Add Comment

昨天跟俩同学吹水了一天, 心情不错. 临睡前有行善的冲动, 帮网友小改了一下主题. 任务比较简单, 只是为一个三栏主题添加对 Widget 的支持而已.
事后有网友认为这样的做法欠妥, 要么鼓励收费, 要么授人以渔. 我想想也有道理, 打算以后少干这些活, 但多聊聊这些事. 就先从这次简单的案例开始说吧.

单侧边栏

functions.php

<?php
if( function_exists('register_sidebar') ) {
	register_sidebar(array(
		'before_widget' => '<li class="widget">', // widget 的开始标签
		'after_widget' => '</li>', // widget 的结束标签
		'before_title' => '<h3>', // 标题的开始标签
		'after_title' => '</h3>' // 标题的结束标签
	));
}
?>

sidebar.php

<div id="sidebar">
	<ul class="widgets">
<?php // 如果没有使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) :
?>
	<!-- widget 1 -->
	<li class="widget">
		<h3>标题 1</h3>
		<ul>
			<li>条目 1.1</li>
			<li>条目 1.2</li>
			<li>条目 1.3</li>
		</ul>
	</li>
	<!-- widget 2 -->
	<li class="widget">
		<h3>标题 2</h3>
		<ul>
			<li>条目 2.1</li>
			<li>条目 2.2</li>
			<li>条目 2.3</li>
		</ul>
	</li>
<?php endif; ?>
	</ul>
</div>

双侧边栏

functions.php

<?php
if( function_exists('register_sidebar') ) {
	register_sidebar(array(
		'name' => 'Sidebar_1', // 侧边栏 1 的名称
		'before_widget' => '<li class="widget">', // widget 的开始标签
		'after_widget' => '</li>', // widget 的结束标签
		'before_title' => '<h3>', // 标题的开始标签
		'after_title' => '</h3>' // 标题的结束标签
 
	));
 
	register_sidebar(array(
		'name' => 'Sidebar_2', // 侧边栏 2 的名称
		'before_widget' => '<li class="widget">', // widget 的开始标签
		'after_widget' => '</li>', // widget 的结束标签
		'before_title' => '<h3>', // 标题的开始标签
		'after_title' => '</h3>' // 标题的结束标签
 
	));
}
?>

sidebar.php

<div id="sidebar_1">
	<ul class="widgets">
<?php // 如果没有在侧边栏 1 中使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_1') ) :
?>
	<!-- widget 1 -->
	<li class="widget">
		<h3>标题 1</h3>
		<ul>
			<li>条目 1.1</li>
			<li>条目 1.2</li>
			<li>条目 1.3</li>
		</ul>
	</li>
<?php endif; ?>
	</ul>
</div>
 
<div id="sidebar_2">
	<ul class="widgets">
<?php // 如果没有在侧边栏 2 中使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar_2') ) :
?>
	<!-- widget 2 -->
	<li class="widget">
		<h3>标题 2</h3>
		<ul>
			<li>条目 2.1</li>
			<li>条目 2.2</li>
			<li>条目 2.3</li>
		</ul>
	</li>
<?php endif; ?>
	</ul>
</div>

N 侧边栏

请使用数学归纳法进行推理.
参考教材: 人民教育出版社全日制普通高级中学教科书数学第三册

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: 使 WordPress 主题支持 Widget

  1. http://0.gravatar.com/avatar/479d81c5982474c73409c0001ce00b4f?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    双侧边栏是指inove经典的左右侧边栏,还是2个侧边栏啊

  2. http://1.gravatar.com/avatar/f150a877b40e827c8526f8534ca92e20?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    多个侧边栏是这样实现的啊,收益匪浅啊。

  3. http://1.gravatar.com/avatar/720eb71952998fa91df2299c3eca654b?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    是不是把侧边栏做成空白,然后从后台用小工具添加功能就可以呢??

  4. http://0.gravatar.com/avatar/6f6612e7a9c4a07411398b0674945358?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    怎么你不把相关的教程集中,出一个电子书呢?

  5. http://1.gravatar.com/avatar/7060dfb9a4706f749898fb7b915aa5da?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    那个参考教材不对.. 人民教育出版社全日制普通高级中学教科书算数第八十册

  6. http://0.gravatar.com/avatar/490cf262668eebb0f0f1a50d9d48d702?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    @众生圈
    我用 SimpleXML 读取爱词霸的 RSS 而已.

  7. http://1.gravatar.com/avatar/d4764840a9fb6addb2fdf716c9ea2633?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    Daily Sentence的特效是如何实现的 :roll: :eek: 啊????

  8. http://0.gravatar.com/avatar/cab963ed5a8f34ea97a0769184715808?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  9. http://1.gravatar.com/avatar/bc0c69a6bf72455c4abb653a1d70747a?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  10. http://1.gravatar.com/avatar/bca4d64891bb457b13007c04e77fee19?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    数学我最差,高中三年的数学课是睡过来的。 :cry:

  11. http://0.gravatar.com/avatar/4c0d5d8768d0c3551aff00d7a1dfc710?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  12. http://0.gravatar.com/avatar/8e521d471201264b6469e3aa3630adc0?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    以后这样的事情我还是找你做比较好 :grin:

  13. http://0.gravatar.com/avatar/a58aebac0f7aef9b2dc40e862b0bc6c9?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    乐于助人的人!

  1. Loading...