カテゴリの情報をもとにして表示する画像を切り替えていたのですが、エントリー件数が0件のときに情報を取得できない構造になっていたので作り直しました。
get_query_varを利用すればエントリー件数が0件でも取得できるというのは前回の作業で知っていたのですが、まだまだいろいろ知らない・解らないことが多いですね。
カテゴリ名・カテゴリスラッグを取得後、取得したカテゴリ名からカテゴリIDを取得してカテゴリのURLを生成しています。
<?php
$cat = get_query_var('cat');
$category_name = get_query_var('category_name');
if ( !empty($cat) ) {
if ( !stristr($cat,'-') ) {
//カテゴリ名の取得
$cat_name = apply_filters('single_cat_title', get_the_category_by_ID($cat));
//カテゴリスラッグの取得
$category_name = explode('/',$category_name);
$category_slug= $category_name[count($category_name)-1];
//画像ファイルの alt
$ttl_alt = $cat_name;
//画像ファイルの名前
$ttl_img = $category_slug;
//URLの生成
$catid = get_cat_ID( $cat_name );
$getCatURL = get_category_link( $catid );
}
}
?>
<!-- 例1 カテゴリ名・カテゴリスラッグから画像を表示 -->
<img src="<?php bloginfo('template_url'); ?>/img/img_<?php echo $ttl_img ;?>.png" width="100" height="50" alt="<?php echo $ttl_img;?>について">
<!-- 例2 カテゴリのURLを生成 -->
<a href="<?php echo $getCatURL; ?>">カテゴリ一覧を見る</a>
これでカテゴリにひもづくエントリーが0件でも問題なくカテゴリ情報を取得して条件分岐などに利用できるようになりました。
apply filters - フィルターフックに追加された関数を呼び出します。
関数リファレンス/apply filters
フィルターフックの一覧はプラグイン_APIをごらんください。
single_cat_title - カテゴリー名を表示する。
single_cat_title
string single_cat_title( [ string $prefix = '' [ , bool $display = true ] ] )
アーカイブページのカテゴリー名を取得し、パラメータ$displayがtrueならば表示する。$displayがfalseの場合は、文字列として返す。
パラメータ$displayがfalseの場合はカテゴリー名を返す。$displayがtrueの場合、返り値はない。
get_the_category_by_ID - カテゴリーIDからカテゴリー名を取得する
get_the_category_by_ID
mixed get_the_category_by_ID( int $cat_ID )
カテゴリー名を返す。パラメータ$cat_IDが無効なカテゴリーIDの場合は、エラー内容を示すWP_Errorのオブジェクトを返す。