• HOME
  • WordPress
  • Cate: タクソノミー&ターム「カテゴリ」

タームアーカイブへのリンクの取得について

echo get_term_link($t_id,'shien-cat');

http://codex.wordpress.org/Function_Reference/get_term_link

これでいけるのは分かるのだけど$t_idの箇所が手打ちの数字80とかならちゃんと出力するが
$term->term_idとかにすると普通にエラーになる。

$term->sulg

にするとちゃんと動く。

get_category_linkのほうは普通に動くのだけどなかなかはまった。。。
いや、仕様的にまちがった使い方をしてるつもりはないんだけど。。。

タクソノミでタームの記事を全件表示

タームのアーカイブページで全件を表示させたい場合。

$p_type = get_post_type();
$taxonomy = get_query_var( 'taxonomy' );
$term = get_query_var( 'term' );
query_posts('post_type='.$p_type.'&'.$taxonomy.'='.$term.'&posts_per_page=-1');

もっとSimpleにかけるとおもうが。。。
クエリのなかにposts_per_pageだけ追加したりできるようなPHPの関数とかないじゃろか?

カテゴリーに画像を登録する[Category Meta plugin]

カテゴリーに画像もあわせて登録する方法。

Category Meta plugin

というプラグインをつかう。
実行させたのちに管理画面から設定ー>Category Metaにいき
メタを付与させたいタクソノミーを決めフィールドを選びフィールド名をつけてADDる。

Sanitizeするかどうかのチェックがあるので基本チェックを入れておいていいかと思う。
使用方法は

<?php $categoryArray = get_the_category($post->ID);
$thisCat = $categoryArray[0]->term_id; if(function_exists('get_terms_meta')) {
$image = get_terms_meta($thisCat, 'image');
$image = $image[0];
$text = get_terms_meta($thisCat, 'text');
$text = $text[0];
} ?>
<img src="<?php echo ($image); ?>" width="100" height="100" alt="<?php echo ($text); ?>" />

けどこのままだと画像URLをそのまま掃出しするだけなので、近いうちにリサイズもできるような形でコードを考えておこう。
外部のプラグインをつかえばできるようなきがするけど、なるべくWPの中で完結させたいかもかもね。

FPW Category Thumbnailsもいいかもしれない。
こっちは細かく設定ができるようだ。

URLからメディアIDを取得できれば
wp_get_attachment_imageの関数をつかってリサイズをさせることもできるが。。。
全てのメディアとマッチングが必要だからちょっと負荷が高そうだ。
ぬーん。。。

特定メタバリューでソートをする場合のカテゴリページの[query_post]

<?php 
$cat = get_query_var( 'cat' );
global $query_string;
query_posts($query_string . "&cat='.$cat.'&orderby=meta_value&meta_key=date2&order=DESC");
?>

				<?php
					$category_description = category_description();
					if ( ! empty( $category_description ) )
						echo '<div class="archive-meta">' . $category_description . '</div>';
				get_template_part( 'loop', 'category' );
				?>


<?php wp_reset_query();?>

in_categoryをつかったテンプレートの条件分岐

<?php if(in_category('5')):include(TEMPLATEPATH. '/single-news.php');
elseif(in_category('4')):include(TEMPLATEPATH. '/single-news.php');
elseif(in_category('6')):include(TEMPLATEPATH. '/single-recruit.php');
elseif(in_category('7')):include(TEMPLATEPATH. '/single-other.php');
?>

<?php else: ?>

<p>

カテゴリー1と2以外のときの表示内容をここに。

</p>

<?php endif; ?>