投稿内容の一覧をタイル状に表示して、フィルターやソートをさせたい時はプラグインを使うことも多いけど、jQueryをその分重複して読み込むことになってしまったり、そのせいでスライドショーとか他のライブラリが動かなくなることが多いので、シンプルに機能をつけたかったので、試してみました。
使うライブラリは
・MixltUp
というもの。
サイトにソートとフィルターのデモが出ています。
で、これを実際にwordpressのコンテンツのソートに使う場合、
まずはヘッダに必要なものを読み込ませます。
header.php
の
<?php wp_head(); ?>
の後に記述したら、案の定コンフリクトを起こしたので、前に記述。
<!-- jQuery読み込み -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!-- ソートスクリプト読み込み -->
<script src="http://cdn.jsdelivr.net/jquery.mixitup/latest/jquery.mixitup.min.js"></script>
<!-- Javascript -->
<script type="text/javascript">
$(function(){
// Instantiate MixItUp:
$('#Container').mixItUp();
});
</script>cssにはこれを記述。
#Container .mix{
display: none;
}後は必要な部分をマークアップするだけ。
フィルタするボタンの部分にそのカテゴリのクラス名を入れる。
このブログだと、
↓フィルタ用のボタン <div class="filter" data-filter="all">すべて表示</div> <div class="filter" data-filter=".category-wordpress">カテゴリー(wordpress)</div> <div class="filter" data-filter=".category-news">カテゴリー(news)</div> ↓コンテンツの中身 <div id="Container"> <!--ここからがループ--> <article class="mix category-wordpres">カテゴリー(wordpress)</article> <article class="mix category-news">カテゴリー(news)</article> <article class="mix category-wordpres">カテゴリー(wordpress)</article> <article class="mix category-news">カテゴリー(news)</article> <!--//ここまでがループ--> </div>
1つややこしかったのが、articleのclassに「mix」を足さなくちゃいけないけど、この部分のclassはpost_classで吐き出しているので、直接記述ができない。
そういう場合はその中に追加したいクラス名を入れればいいだけ。
↓これを
<article id="Container post-<?php the_ID(); ?>" <?php post_class(); ?>>
↓こう変更する
<article id="Container post-<?php the_ID(); ?>" <?php post_class('mix'); ?>>これでバッチリフィルタ機能が付けられました。