WP Post Signature v0.1.3 release
On 2011-10-24 23:46:00 By SoliWP Post Signature v0.1.3 release
WP Post Signature,中文名“WordPress 签名档”。最新版本 v0.1.3 现已发布。使用本插件,你可以在每篇文章后面添加签名档,比如许可协议、转载声明等。本次更新修复了非管理员用户无法设置签名的 bug 。
首先感谢 Gatakia 和 Wesley 的反馈。
非管理员用户无法设置签名
此 bug 是由 add_options_page()
参数的不正确使用引入的。
本人不会 PHP ,对 WordPress 的 API 也没有深入研究,写的这几个插件都是因为自己需要,又找不到合适的插件,或有合适的插件却都年久失修,自己修改起来又不方便。所以,写这几个插件时,都是照猫画虎,参考别人的现学现卖来的。
其中,对 add_options_page()
这个 API 的参数 $capability
理解的不够透彻。现在查看了一下官方文档,得知此参数与用户权限相关。按我的理解,WordPress 的用户分为管理员、编辑、作者、贡献者、订阅者五类,又按权限分为十一个等级(0-10),其中,0 对应订阅者、1 对应贡献者、2 对应作者、3-7 对应编辑、8-10 对应管理员(见表)。
参照其他插件,参数 $capability
我使用的是“10”。从而导致,只有管理员才能看到“WordPress 签名档”的设置页面。
知道了问题所在,改起来就简单了。直接把参数 $capability
改为“1”,问题解决。
在看 add_options_page()
的文档时,得知它只是 add_submenu_page()
的简单打包(wrapper)。于是转到 add_submenu_page()
的文档继续看。在 Notes 一节,文档提到:
For
$menu_slug
please don't use__FILE__
it makes for an ugly URL, and is a minor security nuance.
于是,把原来的 __FILE__
该成了 wp-post-signature
。这就导致了另一个 bug 。
“您没有足够的权限访问该页面”
该 bug 的英文版提示为:
You do not have sufficient permissions to access this page.
在签名档设置页面中,提交表单调用的是 /wp-admin/options-general.php
并传递一个“page”参数。该参数正是 add_options_page()
的 $menu_slug
所指定的。而此前我却错以为应该是插件的配置页面所对应的 php 文件,所以:
<form action="<?php echo get_bloginfo(" method="post">/wp-admin/options-general.php?page=<?php echo plugin_basename(__FILE__); ?>"></form>
如上,在 add_options_page()
的 $menu_slug
参数为 __FILE__
时,是没有问题的。但我却将其改为 wp-post-signature
,而没有对应的改变 page 参数。所以,进行如下修改后,bug 解决:
<form action="<?php echo get_bloginfo(" method="post">/wp-admin/options-general.php?page=wp-post-signature"></form>
在修改完第一个 bug 后,我发布了 v0.1.2 。 v0.1.3 则是为修改第二个 bug 而发布的。再次感谢感谢 Gatakia 和 Wesley 的及时反馈。
插件信息
名称:WP Post Signature,中文名“WordPress 签名档”
版本:v0.1.3
作者:Soli
地址: http://wordpress.org/extend/plugins/wp-post-signature/
作者主页:http://www.cbug.org
下载地址:http://downloads.wordpress.org/plugin/wp-post-signature.zip
欢迎大家使用本插件,并期待您的反馈。