すべてのプロジェクトを表示する作業ページがあります。分類法を使用して、クリックされたリンクに応じて結果をグループ化して表示しています。全体的な目標は、フィルタリングされた結果を表示しながら、クリックされたリンクを強調表示したままにすることです。ユーザーが [Things] をクリックすると、[Things] が太字になり、WP で "Things" として分類された結果のみがページに読み込まれます。
html は次のようになります。
<div class="more">
<a class="static" href="site/work">ALL</a>
<a class="static" href="site/?type=Things">Things</a>
<a class="static" href="site/?type=More Things">More Things</a>
<a class="static" href="site/?type=Objects">Objects</a>
<a class="static" href="site/?type=Goals">Goals</a>
<a class="static" href="site/?type=Books">Books</a>
<a class="static" href="site/?type=Drawings">Drawings</a>
<a class="static" href="site/?type=Thoughts">Thoughts</a>
</div>
したがって、リンクはプロジェクトの結果セットをフィルタリングします。リンクをプルする WP ループは次のとおりです。
<div class="more">
<a class="static" href="<?php bloginfo('template_url'); ?>/work/">ALL</a>
<?php
foreach ($tax_terms as $tax_term) {
echo '<a class="static" href="' . esc_attr(get_term_link($tax_term, $taxonomy)) . '" title="' . sprintf( __( "View all posts in %s" ), $tax_term->name ) . '" ' . '>' . $tax_term->name.'</a>';
} ?>
</div>
ユーザーがどのページにいるかを表示するように、いくつかのJqueryをセットアップしました。
$(function(){
$("div.more a").forEach(function(i){
var active = window.location.hash;
if($(this).text() == active){
$(this).trigger('click');
}
});
});
$("div.more a").on("click", function (event) {
event.preventDefault();
// Revert all to original state
$("a.static")
.removeClass("active")
.addClass("static");
// Set classes to clicked anchor
$(this)
.removeClass("static")
.addClass("active");
window.location.hash = $(this).text();
});
ここで問題が発生します。どのプロジェクト タイトルがクリックされたかをユーザーに示すクラスの変更を維持するために、ページの再読み込みオプションを削除しました。?type=
新しいフィルター処理された結果を取得するには、URL を介して渡す必要があります。これは Ajax を使用して実行できることが提案されました。私はそれを実行する方法について知りません。
または、Jquery を使用して、URL を介して渡された値を取得し、それをリンクと一致させることはできますか?
アップデート
簡単に説明しましょう。<a>
タグにアクティブというクラスを渡すことで、どのリンクがクリックされたかをユーザーに表示したいと思います。
したがって、デフォルトでは、コードは次のようになります。
<div class="more">
<a class="static" href="site/work">ALL</a>
<a class="static" href="site/?type=Things">Things</a>
<a class="static" href="site/?type=More Things">More Things</a>
<a class="static" href="site/?type=Objects">Objects</a>
<a class="static" href="site/?type=Goals">Goals</a>
<a class="static" href="site/?type=Books">Books</a>
<a class="static" href="site/?type=Drawings">Drawings</a>
<a class="static" href="site/?type=Thoughts">Thoughts</a>
</div>
しかし、ユーザーが「Things」などのリンクをクリックすると、コードは次のようになります。
<div class="more">
<a class="active" href="site/work">ALL</a>
<a class="static" href="site/?type=Things">Things</a>
<a class="static" href="site/?type=More Things">More Things</a>
<a class="static" href="site/?type=Objects">Objects</a>
<a class="static" href="site/?type=Goals">Goals</a>
<a class="static" href="site/?type=Books">Books</a>
<a class="static" href="site/?type=Drawings">Drawings</a>
<a class="static" href="site/?type=Thoughts">Thoughts</a>
</div>
ほとんどの場合、これは JQuery で解決できます
removeClass("static").addClass("active)
ただし、新しい url 変数が渡されるとページがリロードされるため、ページがリロードされた後、addClass("active") は保持されません。
これに対する解決策はありますか?