CSレキシコンの表示方法をタイトル順からカスタムフィールド値順に変更する

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="&lt;?php the_permalink(); ?&gt;"> <!--?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="&lt;?php the_permalink(); ?&gt;"> <!--?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="&lt;?php the_permalink(); ?&gt;"> <!--?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"); ?-->

記事の共有: