我有一个wordpress网站。有一个类别页面,上面有一个表格来对帖子进行排序/过滤。
我尝试使用 $_SERVER['PHP_SELF'] 作为表单操作,因为我需要获取表单的内容来显示帖子,但是当我这样做时它会重定向到索引页面。
是否有一个原因?或者在 wordpress 中提交表单的更好方法。
谢谢
这样做的原因是 Wordpress(几乎)通过 index.php 页面运行所有内容,然后通过其路由逻辑处理要显示的页面。您可能会尝试var_dump($_SERVER);
查看您想要的值,但它可能是$_SERVER['REQUEST_URI']
.
您可以使用the_permalink() wordpress 函数来回显当前页面的永久链接。
我认为您使用的内容会重定向到索引,因为 WordPress 使用了不错的 URL。
您可以使用下面的函数来“检索”当前页面的完整 URL:
function selfURL()
{
$ret = substr( strtolower($_SERVER['SERVER_PROTOCOL']), 0, strpos( strtolower($_SERVER['SERVER_PROTOCOL']), "/") ); // Add protocol (like HTTP)
$ret .= ( empty($_SERVER['HTTPS']) ? NULL : ( ($_SERVER['HTTPS'] == "on") ? "s" : NULL) ); // Add 's' if protocol is secure HTTPS
$ret .= "://" . $_SERVER['SERVER_NAME']; // Add domain name/IP address
$ret .= ( $_SERVER['SERVER_PORT'] == 80 ? "" : ":".$_SERVER['SERVER_PORT'] ); // Add port directive if port is not 80 (default www port)
$ret .= $_SERVER['REQUEST_URI']; // Add the rest of the URL
return $ret; // Return the value
}
显然,您将需要使用<form method="GET" action="<?php echo selfURL(); ?>">
来动态设置action
表单。
您在 html 操作中做错了事。
看到的是,当您使用 get 作为表单方法时,以前的值会从 url 中消失。
因此,要保留以前的值,您需要为查询字符串中存在的每个值设置隐藏输入。
请参阅获取这些值的示例。
<?php $exclude_values = array('to_date','from_date');
foreach($_GET as $key => $value){
if(!in_array($key,$exclude_values)){?>
<input type="hidden" name="<?php echo $key;?>" value="<?php echo $value;?>"/>
<?php }
}
?>
我最近也在研究 wordpress 主题。
所以冷静这个答案是完全正确的,因为我很久以前就遇到过这个问题。
注意:添加那些$exclude_values
已经存在于表单字段中的键以及表单提交后不需要的键。
还有一件事是使用selfURL
动作字段的功能