アーカイブページにて特定カテゴリーの記事のみ一覧表示について

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #34059
    courier
    参加者

    トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。

    【お使いの Snow Monkey のバージョン】Version: 7.13.2
    【お使いのブラウザ】chrome
    【当該サイトのURL】http://e-courier.jp/highcube/gallery

    ===

    お世話になっております。

    でアーカイブページで特定カテゴリー一覧を表示するにはどうすればよいのかわからず困っております。

    プラグインCustom Post Type UIを使用し、カスタム投稿で作成しています。

    カテゴリーはCustom Post Type UIのタクソノミーにて作成しました。

    現在は区分けなく一覧で表示されていますが、1ページ内でカテゴリーごとに下記のようなデザインに仕上げたいです。

     

    お手数ですが、ご教授お願いいたします。

     

    0
    #34093
    キタジマ タカシ
    キーマスター

    Snow Monkey Blocks に、「任意のタクソノミーの投稿」というブロックがあります。これで任意のカスタムタクソノミーを選択したブロックを何個か置くのが一番簡単かなと思います。問題点としては、「gallery アーカイブページを固定ページ化する必要がある」「全件表示はできない(タクソノミーごとに最新の○件が表示される)」という点です。

    もしくは、もう gallery アーカイブページのテンプレートをつくっちゃうかですね。子テーマをお使いのようですので、まず下記のファイル(gallery アーカイブページのコンテンツ部分)を子テーマにつくってください。

    子テーマ/template-parts/archive/entry/content/content-gallery.php

    で、ちょっと長いですが、こんな感じでしょうか。

    <?php
    use Framework\Helper;
    
    $post_type_object = get_post_type_object( get_post_type() );
    $taxonomies       = isset( $post_type_object->taxonomies ) ? $post_type_object->taxonomies : [];
    $entries_layout   = get_theme_mod( get_post_type() . '-entries-layout' );
    ?>
    
    <div class="c-entry__content p-entry-content">
    	<?php foreach ( $taxonomies as $taxonomy ) : ?>
    		<?php
    		$terms = get_terms( [ 'taxonomy' => $taxonomy ] );
    		?>
    		<?php foreach ( $terms as $term ) : ?>
    			<h3><?php echo esc_html( $term->name ); ?></h3>
    			<div class="p-archive">
    				<?php
    				$posts = get_posts(
    					[
    						'post_type'      => get_post_type(),
    						'posts_per_page' => -1,
    						'tax_query'      => [
    							[
    								'taxonomy' => $term->taxonomy,
    								'field'    => 'slug',
    								'terms'    => [ $term->slug ],
    							]
    						],
    					]
    				);
    				?>
    				<ul class="c-entries c-entries--<?php echo esc_attr( $entries_layout ); ?>">
    					<?php foreach ( $posts as $post ) : setup_postdata( $post ); ?>
    						<?php the_post(); ?>
    						<li class="c-entries__item">
    							<?php
    							Helper::get_template_part(
    								'template-parts/loop/entry-summary',
    								get_post_type(),
    								[
    									'_entries_layout' => $entries_layout,
    								]
    							);
    							?>
    						</li>
    					<?php endforeach; wp_reset_postdata(); ?>
    				</ul>
    			</div>
    		<?php endforeach; ?>
    	<?php endforeach; ?>
    </div>
    0
    #37003
    courier
    参加者

    返信遅くなりすいません。

    上記ソースで修正してみましたが、2つ目のカテゴリーのアイキャッチ・タイトル・リンクなどが表示されなくなりました。

    各カテゴリーの帯にcssにてデザイン処理を行いたいので、

    ループ処理ではなく、各カテゴリーごとに記載したく考えております。

    下記部分に指定カテゴリーの一覧を取得できるように

    追記することになるかと思うのですが、どこに追記すればよいでしょうか

    ———————————-

    <?php
    $posts = get_posts(
    	[
    		'post_type' => get_post_type(),
    		'posts_per_page' => -1,
    		'tax_query' => [
    			[
    				'taxonomy' => $term->taxonomy,
    				'field' => 'slug',
    				'terms' => [ $term->slug ],
    			]
    		],
    	]
    );
    ?>

    ———————————-

    お手数ですが、ご教授よろしくお願いします。

    0
    #37045
    courier
    参加者

    上記に対する補足です。

    まず一つ目に

    タクソノミー(galley)のカテゴリー(highcubecustom)の一覧を表示する

    二つ目に

    タクソノミー(galley)のカテゴリー(highcube)の一覧を表示する

    というようにカスタマイズしたいです。

    お手数ですが、よろしくお願いします。

    0
    #37383
    キタジマ タカシ
    キーマスター

    その場合は

    <?php
    global $post; // ここは1回で OK
    
    $posts = get_posts(
    	[
    		'post_type' => get_post_type(),
    		'posts_per_page' => -1,
    		'tax_query' => [
    			[
    				'taxonomy' => 'galley', // タクソノミー名
    				'field' => 'slug',
    				'terms' => [ 'highcubecustom' ], // ターム名
    			]
    		],
    	]
    );
    ?>
    <ul class="c-entries c-entries--<?php echo esc_attr( $entries_layout ); ?>">
    	<?php foreach ( $posts as $post ) : setup_postdata( $post ); ?>
    		<?php the_post(); ?>
    		<li class="c-entries__item">
    			<?php
    			Helper::get_template_part(
    				'template-parts/loop/entry-summary',
    				get_post_type(),
    				[
    					'_entries_layout' => $entries_layout,
    				]
    			);
    			?>
    		</li>
    	<?php endforeach; wp_reset_postdata(); ?>
    </ul>

    というのを2回書く感じですかね。

    0
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。