Isotope jQuery プラグインを使用して作業ポートフォリオを表示するWordpress のVitruxテーマを使用しています。Isotope ではカテゴリを使用してアイテムを並べ替えることができますが、テーマ内では一度に 1 つのカテゴリでのみ並べ替えることができます (たとえば、「年」や「種類」ではなく、「年」または「種類」)。
ここでモックアップを見ることができます: http://snaprockandpop.samcampsall.co.uk/shoots/
投稿を並べ替える各カテゴリ アイテムに添付されている jQuery は次のとおりです。
function (){
var selector = $(this).attr('data-filter');
$container_isotope.isotope({ filter: selector });
var $parent = $(this).parents(".filter_list");
$parent.find(".active").removeClass('active');
$(".filter_list").not($parent).find("li").removeClass('active').first().addClass("active");
$(this).parent().addClass("active");
return false;
}
Isotope のサイトから、複数のフィルターを使用できることがわかります。これに関する著者のメモを見つけました: http://jsfiddle.net/desandro/pJ6W8/31/
編集: テーマ ファイルを編集することで、適切なクラスとプロパティをフィルター リストに割り当てることができ (これらはページ ソースで確認できます)、クラスと ID をテーマのスタイリング:
$( function() {
var $container = $('#portfolio_container');
$container.isotope({
animationOptions: { duration: 300, easing: 'linear', queue: false },
getSortData : {
year : function ( $elem ) { return parseFloat( $elem.find('._year').text() ); },
live-shows : function ( $elem ) { return parseFloat( $elem.find('._live-shows').text() ); }
}
});
var filters = {};
$('.ql_filter a').click(function(){
var $this = $(this);
if ( $this.hasClass('selected') ) {
return;
}
var $optionSet = $this.parents('.filter_list');
$optionSet.find('.active').removeClass('active');
$this.addClass('active');
var group = $optionSet.attr('data-filter-group');
filters[ group ] = $this.attr('data-filter');
var isoFilters = [];
for ( var prop in filters ) {
isoFilters.push( filters[ prop ] )
}
var selector = isoFilters.join('');
$container.isotope({ filter: selector });
return false;
});
});
2 つの (かなり重要な) こと:
1) 私はこれを正しく編集したという 100% ではありません。Rich の優れたコメントにもかかわらず、私はまだ理解を深めていません。「getSortData」セクションの設定方法については特に明確ではありません-正しいと思いますが、どんな入力でも素晴らしいでしょう。
2) この JavaScript が開始されているかどうかわかりません。現時点では、終了 head タグの直前に配置しましたが、ページを確認すると、上記の元のスクリプトがフィルター項目で実行されていることがわかります。
この段階での指針は素晴らしいでしょう!