具有$_GET变量的URL重新构造或重写

时间:2018-01-25 作者:sarmad.s3developers

我当前正在尝试重写或重新构造url。。我有三个搜索字段,当用户点击搜索时,它会把你带到另一个页面并链接如下表单

“”http://goasquare.com/jobs/?keywords=res&categories%5B%5D=44&location=goa&search_region=&submit=&filter_job_type%5B%5D=“”

我只想像下面的url一样重新构造它http://goasquare.com/jobs/%keyword%/%category%/%location%

我尝试了很多解决方案,但都没有成功,请帮帮我

1 个回复
SO网友:Vlad Olaru

据我所知,你是在寻找漂亮的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 对于上述代码。

结束

相关推荐