我有一个wordpress网站。有一个类别页面,上面有表格可以对帖子进行排序/过滤。
我尝试使用$ _SERVER ['PHP_SELF']作为表单操作,因为我需要获取表单的内容来显示帖子,但是当我这样做时,它会重定向到索引页面。
这有什么理由吗?或者在wordpress中提交表单的更好方法。
由于
答案 0 :(得分:4)
原因是Wordpress通过index.php页面运行(几乎)所有内容,然后通过它的路由逻辑处理要显示的页面。您可以尝试var_dump($_SERVER);
查看您想要的值,但可能是$_SERVER['REQUEST_URI']
。
答案 1 :(得分:2)
你可以使用the_permalink() wordpress函数来回显当前页面的永久链接。
答案 2 :(得分:1)
我认为您使用的内容会重定向到索引,因为WordPress使用不错的网址。
您可以使用以下功能“检索”当前页面的完整网址:
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
。
答案 3 :(得分:-10)
你在html行动中做错了。
看到的是,当你使用get as form方法时,之前的值会从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
函数作为动作字段