WP 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

欢迎大家使用本插件,并期待您的反馈。

Creative Commons License Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license .