我正在使用插件在管理员中显示一个表单来输入用户的一些数据。
此表单提交到此网址:
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
没有被调用。
有任何建议......?
答案 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()
{
...
}
它就像一个魅力!