Widgetize 侧边栏的登录窗口
July 25th, 2007 Denis
前面介绍了如何在侧边拦设置登录窗口,其中 Brezeck 由于使用 Widget 不好使用这个插件,于是今天去查了下怎么写 Widget 插件(可能需要代理才能访问),花了1个小时写了这个 Widget 插件,由于时间仓促,可能存在些错误,如果你发现,请向我 report 下。
下载地址:点击下载
下载后,解压缩,把 widget_sidebar_login_panel.php 上传到 plugins 目录下,到管理界面激活即可。当然还要到 Presentation 的 Widgets 设置显示位置。
以下谈谈这个插件的制作过程:
基本的 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!’ 替换成自己的内容即可。
在查看 sidebar_login.txt 中的代码,它是通过 $user_ID 这个变量判断是否有用户登录来显示不同的 panel,如果用户登录了,则显示一些操作链接,没有用户登录,则显示用户登录界面和注册链接。所以我们把我们判断语句和基本的 Widget 语法穿插起来就可以实现这个 Widget 插件。
然后又从 WordPress Widgets 说明文档上知道:不要在插件导入之后执行任何代码,并使用 plugins_loaded 这个hook。从而得知 add_action 的对象是 plugins_loaded。
综合以上,得到以下代码:
<?php /* Plugin Name: Sidebar Login Panel Widget Plugin URI: http://fairyfish.com/ Description: add a login panel in your sidebar Version: 1.0 Author: Denis Deng Author URI: http://fairyfish.com/ */ function widget_sidebar_login_panel_hook() { function widget_sidebar_login_panel($args) { extract($args); ?> <?php echo $before_widget; ?> <?php global $user_ID, $user_identity, $user_level ?> <?php if ( $user_ID ) : ?> <?php echo $before_title . 'Control panel' . $after_title; ?> <p>Identified as <strong><?php echo $user_identity ?></strong>.</p> <ul> <li><a href="<?php bloginfo('url') ?>/wp-admin/">Dashboard</a></li> <?php if ( $user_level >= 1 ) : ?> <li><a href="<?php bloginfo('url') ?>/wp-admin/post-new.php">Write an article</a></li> <?php endif // $user_level >= 1 ?> <li><a href="<?php bloginfo('url') ?>/wp-admin/profile.php">Profile and personal options</a></li> <li><a href="<?php bloginfo('url') ?>/wp-login.php?action=logout&redirect_to=<?php echo urlencode($_SERVER['REQUEST_URI']) ?>">Exit</a></li> </ul> <?php elseif ( get_option('users_can_register') ) : ?> <?php echo $before_title . 'Identification' . $after_title; ?> <form action="<?php bloginfo('url') ?>/wp-login.php" method="post"> <p> <input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="16" /> <label for="log">User</label><br /> <input type="password" name="pwd" id="pwd" size="16" /> <label for="pwd">Password</label><br /><br /> <input type="submit" name="submit" value="Send" class="button" /> <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label><br /> </p> <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>"/> </form> <ul> <li><a href="<?php bloginfo('url') ?>/wp-register.php">Register</a></li> <li><a href="<?php bloginfo('url') ?>/wp-login.php?action=lostpassword">Recover password</a></li> </ul> <?php endif // get_option('users_can_register') ?> <?php echo $after_widget; ?> <?php } register_sidebar_widget('Sidebar Login Panel Widget', 'widget_sidebar_login_panel'); } add_action('plugins_loaded', 'widget_sidebar_login_panel_hook'); ?>
你愿意的话可以把其中的英文改成中文就可以成为中文版。hoho
参考文档:
这个插件的制作基本参考了 喵爸爸的窩 的 Wordpress widget 習作:FIFA CountDown。
Crystown 的两篇关于 Widget 研究也写的很不错,很大的参考作用。
另外还有插件 Widgetize Anything 可以帮你制作任何的 Widget,大家可以去试下。
Update:2007年7月26日,发现 Small Potato 已经写出了这个 Widget:My Account Widget
哎,白忙了一场,不过也明白了怎么去写 Widget 不过。
作者:Denis
原文链接:Widgetize 侧边栏的登录窗口





1. Brezeck | July 25, 2007 at 6:32 pm | #
不仅带来一个插件,还带来一个好教程··!!!
2. Brezeck | July 25, 2007 at 6:34 pm | #
没有生成PHP文件阿~~那我自己来好了
3. Brezeck | July 25, 2007 at 6:42 pm | #
很不幸~~含有致命错误……
4. Denis | July 25, 2007 at 8:10 pm | #
我把我自己的 PHP 上传了,现在应该没有问题了。
5. zEUS. | July 26, 2007 at 9:18 am | #
Denis真是高效啊~~ 佩服佩服!
6. Shalafi Vos | July 26, 2007 at 9:48 pm | #
老爷好棒,wordpress的文章非常有参考性
本人的小blog能登上老爷的文章真是荣幸~~
7. Denis | July 26, 2007 at 10:28 pm | #
我晕,你那两篇文章写的非常好啊,呵呵
8. stan | October 18, 2007 at 2:44 pm | #
请帮我看一下,为什么一定要点击USER才能输入用户名?密码也是,很不方便啊~~~
9. 203X | October 24, 2007 at 4:07 am | #
我想要一种顶部导航条登陆的
类似与这种http://www.pjhome.net/
10. tsman | September 4, 2008 at 11:24 am | #
太棒了,学不会了,借用吧!感谢!