カテゴリページにカスタムフィールドを追加し
どうやって追加したのかのコードを提示すると回答が付きやすいです◎
こちらのサイトを参考に追加しました。
http://www.webopixel.net/wordpress/436.html
▼実際のコード
カテゴリに追加したコード(functions.php):
add_action ( 'edit_category_form_fields', 'extra_category_fields');
function extra_category_fields( $tag ) {
$t_id = $tag->term_id;
$cat_meta = get_option( "cat_$t_id");
?>
<tr class="form-field">
<th><label for="time">時間</label></th>
<td>
<input id="time" type="text" size="36" name="Cat_meta[time]" value="<?php if(isset ( $cat_meta['time'])) echo esc_html($cat_meta['time']) ?>" />
</tr>
<?php
}
テンプレート側で表示したコード(index.php):
<ul class="clearfix">
<?php
$tag_all = get_terms("category", "fields=all");
foreach($tag_all as $value):
$cat_data = get_option('cat_'.intval($value->term_id));
?>
<li>
<?php echo esc_html($cat_data['time']) ?>
</li>
<?php endforeach; ?>
</ul>
上記のコードによりカテゴリ順では時間が表示されます。これを、カテゴリ順でなく時間順(カスタムフィールド順)にしたいのです。
通常の記事のカスタムフィールドみたいに
query_posts(‘meta_key=meta_key&orderby=meta_value’);
みたいなものが使えればいいのですが。。。。
こんにちは、
現状のコードは、term_idを使って、オプションテーブルにデータを入れているだけなので、
ソートしたりするなら、もう人手間かけないといけないんじゃないかなと思います
サンプルコードを例にすると
$tag_all = get_terms("category", "fields=all");
foreach($tag_all as $value):
$cat_data = get_option('cat_'.intval($value->term_id));
$key = esc_html($cat_data['time'])
$val = $value->slug;
$data[$key] = $val;
endforeach;
$dataをソートして、並べなおして、どっかに置いて置く、という手順があるといいんじゃないかなと思います。
なるほど。ちょっとnobitaさんの方法でやってみたいと思います。どうもありがとうございました。