WordPress根据表单隐藏字段重写

时间:2014-11-06 18:10:23

标签: php wordpress .htaccess

我所拥有的是一种形式:

<form method="POST" action="/path1/path2/">
<input type="hidden" name="usr" value="firstname-lastname">
<input type="image" src="/pathtoimage/image.jpg" alt="Submit Form" />
</form>

我希望将表单提交到/ path1 / path2 / firstname-lastname后附加到url的末尾,所以我最终得到/ path1 / path2 / firstname-lastname。在大多数情况下,我可以使用.htaccess重写规则做一些事情,但这是WordPress,所以我得到的是404.我应该从哪里开始?我看到一些帖子指向functions.php文件中的更改,但我似乎无法正常工作。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您可以使用WP的add_rewrite_rule(http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

示例:

function wptuts_add_rewrite_rules() {
    add_rewrite_rule('^path-1/path-2/([^/]*)?$','index.php?page_id=PAGE_ID&nameSurname=$matches[1]','top');
    flush_rewrite_rules();
}
add_action( 'init', 'wptuts_add_rewrite_rules' );

function add_query_vars($aVars) {
    $aVars[] = "nameSurname"; 
    return $aVars;
}

add_filter('query_vars', 'add_query_vars');

答案 1 :(得分:0)

这是一个使用vanilla javascript的简单示例:

<script type="text/javascript">
function changeAction(form){
    //get the value from the input
    var fl = document.getElementById("usr").value;
    //add the input to the action
    frm.action = "/path1/path2/" + fl;
}
</script>

<form method="POST" action="/path1/path2/" onSubmit="changeAction(this);">
<input type="hidden" name="usr" id="usr" value="firstname-lastname">
<input type="image" src="/pathtoimage/image.jpg" alt="Submit Form" />
</form>

我真正做的就是给输入一个id以便可以选择它,将onSubmit事件添加到form标签中,然后添加带有函数的脚本标签来处理更改表单操作。

答案 2 :(得分:0)

另一种方式.....你需要建立一个重定向到的URL。您尝试的方式的问题是,wp显然会尝试解析您提供的地址。如果你想克服这个问题,你可以设置一个重写规则来匹配path1 / path2(如果你的页面存在于数据库中,请参阅上面的ltasty答案;如果你想跳过数据库条目,请参见Add "custom page" without page

一旦你有了这个排序,你可以建立url path1 / path2 / name并在收到$ _POST时重定向到它或你当然可以再次将表单动作更改为path1 / path2并从那里重定向到自己。

<?php
if($_POST):
  $name=sanitize_text_field($_POST['usr']);
  $url= get_site_url().'/path1/path2?name='.$name;// using query var method..change if you decide to use the rewrite rule. 
  wp_redirect($url);
  exit();
endif;

?>
<form method="POST" action="#">
<input type="hidden" name="usr" value="firstname-lastname">
<input type="image" src="/pathtoimage/image.jpg" alt="Submit Form" />
</form>

您可以使用$_SERVER['REQUEST_URI']来拉取网址并str_replace您不需要的部分