web-dev-qa-db-ja.com

ページからajax検索結果に戻る

私はあなたがさまざまなフィールドを選択することができるクライアントのためのフォームを持っています、そしてこれはAJAX検索をして、そしてカスタム投稿タイプのために結果を返すでしょう。

今、クライアントが望んでいるのは、彼が単一の結果(特定の単一のCPT)をクリックしたときに「検索結果に戻る」ボタンを持つことです。

私の考えは、クエリ引数のjsonを持つようになる各結果のパーマリンクのURLにクエリパラメータを付けることでした。

<a href="' . get_permalink() . '"?query_string=' . wp_json_encode( $args ) . '>Find out more<a>

それからクエリパラメータを読み、それを単一のカスタム投稿タイプページでバックリンクに渡します。そして、それがユーザがそれをクリックすると、それは再びクエリパラメータとして渡されます。このようにして、そのようなパラメータが存在するかどうかをチェックし、それに基づいてそれを解析して、私のajax検索で通常行うクエリを実行できます。

これは問題ないように思えますが、パースされた配列をエンコードする必要があります。また、wp_json_encodeが機能しないため単に渡すと、htmlentitiesまたはそのようなものを使用する必要があります).

一時的に引数配列を一時的に格納することを考えていましたが、最初の人が単一のページにいる間に他の人が別の検索を行った場合はどうなるでしょうか。それは結果を変えるでしょう、そして結局は働かないでしょう。

私のajaxのレスポンスオブジェクトにもそのクエリを追加しましたが、これは結果ページでのみ有効です。それが次のページで持続するように一時的にそのオブジェクト、またはそのクエリ文字列をローカライズする方法はありますか?

どんなアイデアでも歓迎されています。

EDIT

クエリ引数のjsonは、

{  
"post_type":"adverts",
   "tax_query":{  
      "relation":"AND",
      "0":{  
         "taxonomy":"advert_industry_category",
         "field":"term_id",
         "terms":1560,
         "operator":"IN"
      },
      "1":{  
         "taxonomy":"advert_location_category",
         "field":"slug",
         "terms":"england",
         "operator":"IN"
      },
      "2":{  
         "taxonomy":"advert_facilities_category",
         "field":"name",
         "terms":[  
            "Car parking"
         ],
         "operator":"IN"
      }
   },
   "meta_key":"advert_company_rating",
   "meta_value":"4"
}
1
dingo_d

HistoryAPIを使用してこれを解決しました。

私のajaxは、responsehtml、およびqueryを持つオブジェクトを返すため、検索のhtml結果を履歴状態にプッシュしました。

window.history.pushState( date_out.html, null, null);

ここで、data_outは、ajax呼び出しから返されたオブジェクトです。

次に、単一の広告ページにボタンを追加しました

window.history.back();

クリックで。これにより、検索結果ページが表示されます。次に、検索ページのURLを確認できます(これは、WordPressで設定されているローカライズオブジェクトからハードコーディングまたはプルできます)。検索htmlに対応するhistory.stateに何かがある場合は、それを配置するだけです。目的のdivの後。

次に、そのチェック内で、他のページに移動してプッシュバックしたときに検索結果が表示されないことを確認するために、履歴の空の状態をプッシュします。

うまく動作しているようです:)

1
dingo_d