CSレキシコンの記事(用語)の表示方法をタイトル順からカスタムフィールド値順に変更したので、それの覚え書き。
CSレキシコンは、用語集の形をとっているサイトなので、用語一つを投稿記事一つに割り当てている。用語集なので、ソート時に五十音順の用な形に並ぶのが好ましい。
しかしながら、Wordpressの並び順は、基本的に日付順かタイトル順。そこで、各投稿記事のタイトルの記述方法を工夫して、五十音順に表示していた。
・用語のよみ (用語)
例:こんさどーれさっぽろ (コンサドーレ札幌)
CSプレイヤーズの構築の過程で、カスタムフィールド値にもとづいてソートする手法が理解できたので、それをCSレキシコンにも導入することにする。
用語集のリストは固定ページにカテゴリーごとに作成。以下のコードを用いてい表示する。
<!--?php
global $post;
$tmp_post = $post;
$posts = get_posts('numberposts=100&category=カテゴリーのID番号&orderby=meta_value&meta_key=ソートしたいカスタムフィール名&order=ASC');
?-->
<!--?php
if($posts): foreach($posts as $post): setup_postdata($post); ?-->
<!--?php endforeach; endif;
?-->
<!--?php $post = $tmp_post;
setup_postdata($post);
?-->
<table class="tableplayer01" border="1">
<tbody>
<tr>
<th>読み</th>
<th>用語</th>
</tr>
<tr>
<td><!--?php echo post_custom('yomigana');
?--></td>
<td><a href="<?php the_permalink(); ?>"> <!--?php the_title();
?--></a></td>
</tr>
</tbody>
</table>
テーブルに埋め込む形でリストアップしている。
中頃の以下の部分が、特定のカスタムフィールドでソートするための文。
<!--?php
global $post;
$tmp_post = $post;
$posts = get_posts('numberposts=100&category=カテゴリーのID番号&orderby=meta_value&meta_key=ソートしたいカスタムフィール名&order=ASC');
?-->
<!--?php
if($posts): foreach($posts as $post): setup_postdata($post); ?-->
<!--?php echo post_custom('yomigana');
?-->
<a href="<?php the_permalink(); ?>"> <!--?php the_title();
?--></a>
<!--?php endforeach; endif;
?-->
最後のPHP文は変数のリセット。
<!--?php $post = $tmp_post;
setup_postdata($post);
?-->
リスト表示のページでも、英数字のリストに関しては、タイトル順に並べればいいので、上記のコードではなく、下記のコードを使用。orderbyをtitle順にしてある。
<!--?php
global $post;
$tmp_post = $post;
$posts = get_posts('numberposts=100&category=カテゴリーのID番号&orderby=title&order=ASC');
?-->
<!--?php
if($posts): foreach($posts as $post): setup_postdata($post); ?-->
<!--?php endforeach; endif;
?-->
<!--?php $post = $tmp_post;
setup_postdata($post);
?-->
<table class="tableplayer01" border="1">
<tbody>
<tr>
<th>用語</th>
</tr>
<tr>
<td><a href="<?php the_permalink(); ?>"> <!--?php the_title();
?--></a></td>
</tr>
</tbody>
</table>
固定ページを使って、カスタムフィールド値順にリスと表示するように上記で変更したが、これだけでは、従来のアーカイブ表記のページでは、タイトル順(日付順)になってしまう。
これまでは、コンテンツの並びをタイトル順にしていた。
【これまでのtitle順する場合】
Twenty-Elevenテーマのcategory.php、index.php、archive.php、tag.php、search.phpを書き換える。以下のコードを書き加えていた。
<!--?php query_posts($query_string . "&orderby=title&order=ASC"); ?-->
↓↓↓
【カスタムフィールド値順】
これを以下のコードに変更すると、カスタムフィールド値順に並ぶ。
<!--?php query_posts($query_string . "&orderby=meta_value&meta_key=ソートしたカスタムフィールドの名前&order=ASC"); ?-->