为什么在提交设置表单时,设置API会发送这些参数?
坦白地说,事实并非如此。正如你已经提到的,你的表格只是张贴到options.php
, 它依次处理请求、更新数据库,然后redirects back to the referer.
如何获取referer取决于函数wp_get_referer()
;
function wp_get_referer() {
$ref = \'\';
if ( ! empty( $_REQUEST[\'_wp_http_referer\'] ) )
$ref = $_REQUEST[\'_wp_http_referer\'];
else if ( ! empty( $_SERVER[\'HTTP_REFERER\'] ) )
$ref = $_SERVER[\'HTTP_REFERER\'];
if ( $ref !== $_SERVER[\'REQUEST_URI\'] )
return $ref;
return false;
}
这就是为什么您会被发送回选项页面,而操作参数仍然存在的原因,因为它们存在于
$_SERVER[\'HTTP_REFERER\']
.
但您也会看到,您可以通过在表单中放置隐藏的输入来覆盖这种行为,就像这样;
<input type="hidden" name="_wp_http_referer" value="<?php echo admin_url( \'options-general.php?page=wordpress-file-monitor-plus\' ); ?>" />
现在
options.php
将始终重定向回。。。
http://example.com/wp-admin/options-general.php?page=wordpress-file-monitor-plus
...不管之前查询字符串中有什么内容。