ホーム > タグ > カテゴリ

カテゴリ

特定のカテゴリにある記事のスタイルを変更する【WordPress】

HTMLコードをテンプレート内に書く場合は、必ずというPHP開始・終了タグの外側に書かなければなりません。逆に、PHPコードは、必ず タグの内側に書きます。
下記のように、if や else ステートメント内でもPHPコードを一時的に閉じ、HTMLコードを書くことができます。

<!-- WordPressループ開始 -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<!-- 以下で、記事がカテゴリー3に属しているかテスト -->
<!-- もし属している場合、"post-cat-three"というCSSクラスのdivボックスを表示 -->
<!-- それ以外の場合、"post"というCSSクラスのdivボックスを表示 -->
<?php if ( in_category('3') ) { ?>
           <div class="post-cat-three">
<?php } else { ?>
           <div>
<?php } ?>

<!-- 記事のタイトルとパーマリンクを表示 -->
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

<!-- 日時を表示 -->
<small><?php the_time('F jS, Y'); ?></small>

<!-- 記事の本文をdiv内に表示 -->
<div>
  <?php the_content(); ?>
</div>

<!-- 記事のカテゴリーをコンマ区切りで表示 -->
<p>Posted in <?php the_category(', '); ?></p>
</div> <!-- 最初の div ボックスを閉じる -->

<!-- “else”部分を除いたWordPressループ終了 -->
<?php endwhile; else: ?>

<!-- 最初の“if”にて表示する記事があるかどうかをテストしたため、“else”では記事がない場合に実行 -->
<!-- つまり、記事がなければ以下を表示 -->
<p>Sorry, no posts matched your criteria.</p>

<!-- WordPressループを「完全に」終了 -->
<?php endif; ?>

【参考・引用】
The Loop

子孫含むカテゴリでの条件分岐【WordPress】

求めていた答えが見つかった。

<?php
$post_cats = get_the_category();
if ( $post_cats[0]->cat_ID == 1 || $post_cats[0]->category_parent == 1 || cat_is_ancestor_of( 1, (int)$post_cats[0]->category_parent ) ) { ?>
親カテゴリー1の記事の表示内容
<?php } elseif ( $post_cats[0]->cat_ID == 5 || $post_cats[0]->category_parent == 5 || cat_is_ancestor_of( 5, (int)$post_cats[0]->category_parent ) ) { ?>
親カテゴリー5の記事の表示内容
<?php } else { ?>
その他の記事の表示内容
<?php } ?>

※複数カテゴリーにチェックされている記事でも取得できた最初のカテゴリーで判別されます。

これーー!!
いやー、ほんとたどりつくのに時間がかかった…
メモメモ!!

cat_is_ancestor_of という関数を使うようです。

cat_is_ancestor_of($cat1, $cat2)

$cat1で指定したカテゴリが$cat2の親である場合にtrueを返す。(どれだけ下の階層でもヒットすればtrue)
引数はカテゴリーIDで、数値でないと常にfalseになる。(’1′,’4′)ではなく(1,4)で指定

【参考】
フォーラム 条件分岐について
[WP]Category, Tag and Taxonomy Functions
MovableType・WordPressでカテゴリーの親子関係を判定する

Home > タグ > カテゴリ

want

Return to page top