web-dev-qa-db-ja.com

フロントエンドでWP_Queryを動的にフィルタリングする

私は2つのことをやろうとしている私はカスタム投稿タイプ(CPT)のためのアーカイブページを持っています:

  1. CPTに関連付けられた分類法にある用語のリストを表示します。

  2. これらの用語を使用して、同じページに表示されるwp_queryを動的に変更します。

たとえば、私のカスタム投稿タイプは「読み取り」です。私はそれに関連した 'Reading'のカスタム分類法と、 'Series'、 'Messages'、 'Special Services'などのいくつかの用語を持っています。

リストに表示されている内容を更新する方法としてリストに表示されている用語を使用します(つまり、誰かが[シリーズ]をクリックした場合、ループは[シリーズ]をクリックした場合のみ)その後、「メッセージ」などの投稿のみを更新して表示します。

'get_terms'関数を使用して用語を正しくリストしました。しかし、これらの用語を使ってループ内に表示される内容を動的に変更する方法はわかりません(新しいwp_queryを使用しています)。

ユーザーが選択した用語に、表示されているクエリを(ajaxを介して)動的に更新させるにはどうすればよいですか。

私はあなたが私に与えることができるどんな助けでも感謝します!

1
sevenspirits

これは私が最近あなたのケースに合わせて調整する必要がありますサイトで私が最近したことです。私はこのサイトのいくつかのことにjQueryを使っていたので、それを当てにしました。

WPにはいくつかのすばらしいAJAX処理がありますが、この場合はjQueryのAJAX load()メソッドを使用するのが簡単です。現在のページに要素div#loaded-content-areaがあり、それを別のWebページのdiv#content-to-loadの一部で埋めたい場合は、単にjQueryを実行する必要があります。

$("div#loaded-content-area")
.load("http://www.example.org/page-of-data/ #content-to-load");

だから、あなたの問題を解決するために、私はテーマの分類学用語のテンプレートの中の重要なコンテンツをID="content-to-load"(あるいはもちろんあなたに合ったどんなIDでも)でラベル付けすることを確かめるでしょう。

表示されたページに用語パーマリンクのリストをロードし、それぞれにクリックハンドラをアタッチします。クリックハンドラは、パーマリンクからのhref属性をjQueryの.load URLとして渡します。次に用語をクリックすると、jQueryは用語ページから必要なコンテンツを取得し、最新の情報を表示せずに現在のページ内に表示します。

この方法にはいくつかの利点があります。

1 - プログレッシブエンハンスメント何らかの理由でブラウザにJavaScriptがない場合、ページという用語は代わりに通常どおりに読み込まれます。

2 - クエリを巧妙にいじる必要はありません。ページという用語は、すべてそれを実行します。

1