据我所知,你是在寻找漂亮的URL为您的表单得到发送表单。这里涉及两个步骤。
首先,您需要防止提交表单按钮的默认行为:抓取<form>
动作属性(例如。<form action="http://foo.com">
) 并将输入值作为URL参数(GET参数)添加到其中。为此,您需要使用JavaScript-请参阅this question 以及它的答案。
现在您已经有了友好的URL并重定向到它,您需要“帮助”WordPress理解它。因此,其次,您需要添加一个新的重写规则,将URL映射到服务器端逻辑所需的变量。这段代码应该可以让您开始(我假设您的页面的slug是jobs
):
add_rewrite_rule( \'/jobs/([^/]+)/([^/]+)/([^/]+)/?$\', \'index.php?pagename=jobs&keywords=$matches[1]&categories=$matches[2]&location=$matches[3]\', \'top\' );
下面是入门JavaScript(它基于jQuery,而不是vanilla JS):
<script type="text/javascript">
(function($) {
$(window).load(function(){
var $form = $("#someform");
$form.on(\'submit\', function(event) {
event.preventDefault();
// Create the new URL
var new_url = $form.attr(\'action\') + "/" + encodeURIComponent($form.find("input[name=keywords]").first().val()) + "/" + encodeURIComponent($form.find("input[name=categories]").first().val()) + "/" + encodeURIComponent($form.find("input[name=location]").first().val()) + "/";
// This alert is just to help you see the URL - delete it when no needed
alert(new_url);
// Now we will redirect to the URL
window.location.replace(new_url);
// We need to return false to stop the normal form submission
return false;
});
});
})(jQuery);
</script>
如果你觉得更容易,这里是
the jsfiddle 对于上述代码。