カテゴリの投稿とは異なる方法でサブカテゴリの投稿を表示するようにカテゴリテンプレートを更新しようとしています。私はかなりWordpressのテンプレート編集に慣れていますが、HTML/CSSをよく知っています、そしてそれを理解するのに十分PHP。
現在、私のテーマはすべてのカテゴリとサブカテゴリの投稿をタイトル、サムネイル、ボタン付きの抜粋で表示しています。ただし、メインカテゴリページからサブカテゴリ投稿をこのように表示したくありません。サブカテゴリのタイトル、サブカテゴリの説明、ボタン - >すべてのサブカテゴリページへのリンクとしてカテゴリを表示したいのですが。次に、サブカテゴリを独自のレベルで表示するときに、私のテーマには開始する個別のテンプレートがあります。
私はAccessPress Liteテーマの子供から働いています。私は彼らの既存のarchive.phpを複製し、それをcategory.phpに改名しました。私はまた、コンテンツを表示するために使用されていたループを複製しましたが、現在、それがカテゴリ/サブカテゴリであるかどうかを判断する背後にあるロジックを理解するのに苦労しています。
私のループは現在です:
<?php while ( have_posts() ) : the_post(); ?>
<?php
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h1 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
<?php if ( 'post' == get_post_type() ) : ?>
<div class="entry-meta">
<?php accesspresslite_posted_on(); ?>
</div><!-- .entry-meta -->
<?php endif; ?>
</header><!-- .entry-header -->
<?php if ( is_search() ) : // Only display Excerpts for Search ?>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div><!-- .entry-summary -->
<?php else : ?>
<div class="entry-content">
<?php if(has_post_thumbnail()){?>
<div class="entry-thumbnail">
<?php the_post_thumbnail('thumbnail'); ?>
</div>
<?php } ?>
<div class="short-content">
<?php echo accesspresslite_excerpt( get_the_content() , 500 ) ?>
</div>
<a href="<?php the_permalink(); ?>" class="bttn"><?php _e('More','accesspresslite')?></a>
<?php
wp_link_pages( array(
'before' => '<div class="page-links">' . __( 'Pages:', 'accesspresslite' ),
'after' => '</div>',
) );
?>
</div><!-- .entry-content -->
<?php endif; ?>
</article><!-- #post-## -->
<?php endif; ?>
?>
あなたはあなたのループの中で論理も全く単純である簡単なチェックを必要とするでしょう。この背後にある論理は次のとおりです。
投稿が現在の問い合わせカテゴリ(AKA、親カテゴリ)に属している場合は、このカテゴリが添付されます。
投稿が現在のクエリカテゴリの子カテゴリにのみ属する場合、現在のクエリカテゴリは添付されません。
これを念頭に置いて、次に、現在の投稿にクエリのカテゴリが割り当てられているかどうかを判断するだけで済みます。これには、条件付きチェック has_category()
を使用して、投稿に目的のカテゴリがあるかどうかを確認し、次にget_queried_object_id()
を使用してIDを取得します現在のカテゴリのビュー
ループの中では、次のようなことができます。
$current_category_id = get_queried_object_id();
if ( has_category( $current_category_id ) ) { // Post belongs to the queried category
// Add your specific markup and code for current queried category
} else { // Post belongs to a child category
// Add your specific markup and code for child categories
}