我所拥有的是一种形式:
<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文件中的更改,但我似乎无法正常工作。
非常感谢您的帮助。
答案 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您不需要的部分