自己动手写 WordPress 插件:窗体化插件 1
2007年11月10日
上一节我们通过一个很简单并且很有意义的插件 WP-Sofa 给大家讲解了如何自己动手开始写插件,今天将和大家讲解如和窗体化这个插件,并推出我们的沙发二代。
首先,什么是窗体化(widgetizing)呢?简单的说,窗体化就是让侧边栏适合 Widget 这个插件(从 2.2 开始,WordPress 已经内置了 Widget),它能让你非常容易就能够重新整理侧边栏的模块,而不需要手工去修改代码。
立刻就会跑出第二个问题,主题不支持 Widget,怎么办?能怎么办,不懂代码的,换一个主题咯,懂的修改代码让它支持咯,如何修改?看文章:窗体化侧边栏
废话说完了,那我们开始我们今天的主题:窗体化你的插件。
首先,我们让插件能够支持 Widget 只是一个额外的功能,原有的手工调用的功能还是要保持。所以我们把原有的代码作如下改动:
把原有的sofa 这个函数的函数名修改为 get_sofa。
把最后的 echo $output; 修改成 return $output;。
然后创建一个新的 sofa 函数。如下:
function sofa(){ $output = get_sofa(); echo $output; }
这样保证了原来的 sofa 函数还能自动调用。
下面我们开始 widget 这个插件:
首先了解下基本的 Widget 语法:
<?php function widget_myuniquewidget($args) { extract($args); ?> <?php echo $before_widget; ?> <?php echo $before_title . 'My Unique Widget' . $after_title; ?> Hello, World! <?php echo $after_widget; ?> <?php } register_sidebar_widget('My Unique Widget', 'widget_myuniquewidget'); ?>
上面的代码用用 register_sidebar_widget 注册函数自己之后,输出 widget 标题 'My Unique Widget' 及內容 'Hello, World!'。
只要把标题替换成自己的标题,然后把 'Hello, World!' 替换成自己的内容即可。
然后又从 WordPress Widgets 说明文档上知道:不要在插件导入之后执行任何代码,并使用 plugins_loaded 这个hook。从而得知 add_action 的对象是 plugins_loaded。
根据上面的分析,我们的 Sofa 的 widget 函数为:
<? function widget_sidebar_sofa() { function widget_sofa($args) { extract($args); echo $before_widget; echo $before_title . '最沙发的人' . $after_title; $output = get_sofa(); echo $output; echo $after_widget; } register_sidebar_widget('WP-Sofa', 'widget_sofa'); } add_action('plugins_loaded', 'widget_sidebar_sofa');
OK,这节到此为止。哦,你错了,下一节我们将继续这个话题:窗体化插件 2,还有什么好讲的呢?到时候关注就行了,嘿嘿。根据 Underone 的建议 把插件的名字改为最沙发的人,另外在抢沙发战役中屡屡败给某著名沙发党大猫和胡戈戈同学,所以该插件的作者名字也该成:抢不到沙发的人。如果你因此认为这是两个插件,本人不负任何责任。第二版下载地址:wp-sofa-2.0.zip。
7 条评论 添加你的评论 →

1. 胖逗逗 | 2007:11:10 - 00:59:03 | #
我也沙发一把
2. newstart | 2007:11:10 - 01:00:57 | #
板凳一个!
3. 胡戈戈 | 2007:11:10 - 01:02:57 | #
胖逗逗把沙发留给别人啊
4. 大猫 | 2007:11:10 - 08:56:04 | #
我的主题还真不支持widgets…非常感谢
5. 金山毒霸2008下载 | 2007:11:20 - 20:50:48 | #
高手哇! 学习!
6. 黑色饼干 | 2007:12:05 - 10:14:11 | #
呵呵,我也要开始来关注沙发啊,哈哈
7. 王子 | 2008:05:05 - 22:51:14 | #
好友收获啊