【发布时间】:2018-02-14 10:14:48
【问题描述】:
在 Wordpress 网站上,我在我的网站上的表单(下面的代码)中使用 admin-post.php 在提交表单时触发操作,我可以在其中处理 $_POST 项目并设置一些 cookie。如果我将我的帐户角色设置为管理员,这可以正常工作,但如果我只是将角色更改为订阅者则不起作用(我需要我的订阅者能够提交此表单)。作为订阅者角色,而不是运行 admin-post.php,它只是将我重定向到网站主页,即使我仍然登录。所以它的行为就像 admin-post.php 作为订阅者角色不可执行,但我不是确定如何更改...也许我需要在 wp-admin 目录中添加某种 .htaccess 代码?我被难住了……有什么想法吗?
< form method='post' action='/wp-admin/admin-post.php'>
< input type='hidden' name='action' value='run_my_wp_action' >
//Other form items removed
<input type='submit' name='submit' value='Next' >
</form >
我的 WP 插件中的 PHP
add_action( 'admin_post_nopriv_run_my_wp_action', 'my_wp_action' );
add_action( 'admin_post_input_run_my_wp_action', 'my_wp_action' );
function my_wp_action() { //code }
【问题讨论】:
-
我不确定我能否回答您的具体问题,但这似乎不是使用权限的正确方法。您是否考虑过在您的插件中创建一个单独的表单,允许任何用户角色提交它,但没有问题所暗示的潜在漏洞?
-
我想我可能需要。你知道这是否是预期的操作(订阅者角色无法访问 admin-posts.php?)