Admin中的表单提交未设置is_admin()TRUE

时间:2016-10-31 作者:Imran Ahmed

我正在使用一个插件在admin中显示一个表单,该表单输入用户的一些数据。

此表单提交到此url:

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

但是,当调用此url时,虽然它是一个管理url,但它不会将is\\u 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\\u admin()为true。。。但是当发布的url(http://localhost/wordpress/wp-admin/my_settings_save.php) 调用时,is\\u admin()返回false,因此返回my admin/core。未调用php。

有什么建议吗。。。?

1 个回复
SO网友:Imran Ahmed

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

首先,表单应该发布到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\\u admin()为true,并且成功调用了我的管理核心文件。

在该管理核心文件中,我仅设置以下操作:

add_action(\'admin_post_my_settings_save\', \'my_settings_save_function\');
function my_settings_save_function()
{
    ...
}
它就像一个符咒!

相关推荐

WP_COMMENTS表真的很大,正在慢慢加载/wp-admin/dit-Comments.php

我们的wp\\u注释有数百万行。当我们加载时/wp/wp-admin/edit-comments.php 它将超时。看看mysql,这个简单的查询需要很长时间SELECT wp_comments.comment_ID FROM wp_comments WHERE ( ( comment_approved = \'0\' OR comment_approved = \'1\' ) ) AND comment_type IN (\'pingback\', \'trackback\')&