Wordpress:管理员中的表单提交未设置is_admin()true

时间:2016-10-31 09:09:35

标签: php wordpress

我正在使用插件在管理员中显示一个表单来输入用户的一些数据。

此表单提交到此网址:

http://localhost/wordpress/wp-admin/my_settings_save.php

但是当调用此网址时,虽然它是管理网址,但它没有将is_admin()设置为true,因此我的管理处理代码不会被调用。

这是处理代码:

if ( is_admin() )
    require_once plugin_dir_path( __FILE__ ) . 'admin/core.php';
else
    require_once plugin_dir_path( __FILE__ ) . 'public/core.php';

首次调用表单时,is_admin()true ...但是当调用发布的网址(http://localhost/wordpress/wp-admin/my_settings_save.php)时,is_admin()会返回false因此我的admin/core.php没有被调用。

有任何建议......?

1 个答案:

答案 0 :(得分:0)

好的,这是我发现解决问题的方法:

首先,表格应发布到admin-post.php

第二,应该有一个隐藏变量“action”

所以表格应该是:

<form method="post" action="<?php echo esc_url( admin_url('admin-post.php') ); ?>">
    <input type="hidden" name="action" value="my_settings_save">
    ....
</form>

现在is_admin()为真,我的管理核心文件成功调用。

在该管理核心文件中,我只设置了此操作:

add_action('admin_post_my_settings_save', 'my_settings_save_function');
function my_settings_save_function()
{
    ...
}

它就像一个魅力!