Wordpress中的PHP $ _SERVER ['PHP_SELF']重定向到索引页面

时间:2012-06-07 13:49:50

标签: php forms wordpress action

我有一个wordpress网站。有一个类别页面,上面有表格可以对帖子进行排序/过滤。

我尝试使用$ _SERVER ['PHP_SELF']作为表单操作,因为我需要获取表单的内容来显示帖子,但是当我这样做时,它会重定向到索引页面。

这有什么理由吗?或者在wordpress中提交表单的更好方法。

由于

4 个答案:

答案 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函数作为动作字段