2016-10-31 102 views
0

我正在使用插件来显示在管理中输入用户的一些数据的窗体。WordPress的:表单提交管理员没有设置is_admin()true

这种形式提交到这个网址:

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

但是,当这个网址被调用,虽然它的一个管理URL,它不设置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 ......但是,当发布URL(http://localhost/wordpress/wp-admin/my_settings_save.php)被调用时,is_admin()回报false,因此我admin/core.php是不叫。

任何建议...?

回答

0

好吧,这里是我发现了什么来解决这个问题:

首先,形式应张贴管理员-post.php中

第二,应该有一个隐藏的变量“行动“

这样的形式应该是这样的:

<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() 
{ 
    ... 
} 

,它就像一个魅力!