前提
カスタム投稿 "live" のカスタムフィールド "event-date" へ開催日を入力しています。
なお、"event-date"のフィールドタイプは"デイトピッカー"です。
初めは日付と比較して記事毎にラベルを貼って対応しておりましたが、タブで切り替える方法ができないかと色々調べた結果自分の知識不足で実装できませんでしたのでご質問させていただいております。
お力を貸していただきたいです。
どうぞよろしくお願いします。
やりたいこと
カスタムフィールド"event-date"に入力された日付を元に現在の日付と比較してアーカイブページで
Up coming ➡ 開催日前のイベント一覧
Past ➡ 終了したイベント一覧
のように"タブ"で切り替えて表示したいです。
現状
php
1<ul class="archive"> 2 3<?php $args = array( 4'numberposts' => -1, 5'post_type' => 'live' 6); 7$posts = get_posts( $args ); 8if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post ); 9?> 10 11<li> 12 13<?php 14date_default_timezone_set('Asia/Tokyo'); 15$today = date("Ymd"); 16$to = intval($today); 17$date_start = get_field('event-date', false, false); 18$y1 = substr($date_start,0,4); 19$m1 = substr($date_start,4,2); 20$d1 = substr($date_start,6,2); 21$start_app = $y1.$m1.$d1; 22$sa = intval($start_app); 23?> 24 25<?php if ($sa > $to):?> 26<div class="upcoming">Up coming!</div> 27 28<?php elseif($to > $start_app) : ?> 29<div class="past">Past</div> 30 31<?php endif; ?> 32 33<div class="live_info"> 34<div class="inner"> 35<?php 36if ($terms = get_the_terms($post->ID, 'live-tag')) { 37foreach ( $terms as $term ) { 38echo '<span class="tag">',esc_html($term->name),'</span>'; 39} 40} 41?> 42 43<h3 class="media_title"><a href="<?php the_permalink();?>"><?php the_title_attribute(); ?></a></h3> 44<span class="term_tag inner"><?php the_field('live_venue'); ?></span> 45<div class="date"> 46<?php 47$date = get_field('event-date', false, false); 48$date = new DateTime($date);{ 49echo $date->format('Y.n.j D'); 50} 51?> 52</div> 53</div> 54</div> 55 56</li> 57 58<?php endforeach; ?> 59<?php else : ?> 60<li><p>ライブ情報が見つかりませんでした。</p></li> 61<?php endif; 62wp_reset_postdata(); ?> 63 64</ul>
試したこと
<input id="all" type="radio" name="tab_item" checked> <label class="tab_item" for="all">Up coming!</label> <input id="programming" type="radio" name="tab_item"> <label class="tab_item" for="programming">Past</label> <?php date_default_timezone_set('Asia/Tokyo'); $today = date("Ymd"); $to = intval($today); $date_start = get_field('event-date', false, false); $y1 = substr($date_start,0,4); $m1 = substr($date_start,4,2); $d1 = substr($date_start,6,2); $start_app = $y1.$m1.$d1; $sa = intval($start_app); ?> <?php if ($sa > $to):?> <div class="tab_content" id="programming_content"> ループ内容(上記で記述した内容と重複する為省略させていただきます。) </div> <?php elseif($to > $start_app) : ?> <div class="tab_content" id="programming_content"> ループ内容(上記で記述した内容と重複する為省略させていただきます。) </div> <?php endif; ?>
CSSのみでタブを切り替える方法をためしました。
こちらで実装できないかと思ったのですが、やはりできず記事の情報が表示されませんでした。
css
1.tab_item { 2 width: calc(100%/2); 3 height: 40px; 4 background-color: #f5f5f5; 5 line-height: 40px; 6 font-size: 1.2em; 7 text-align: center; 8 color: #565656; 9 display: block; 10 float: left; 11 text-align: center; 12 transition: all 0.2s ease; 13} 14.tab_item:hover { 15 opacity: 0.75; 16} 17 18input[name="tab_item"] { 19 display: none; 20} 21 22.tab_content { 23 display: none; 24 padding: 2em 0 0; 25 clear: both; 26 overflow: hidden; 27} 28 29#all:checked ~ #all_content, 30#programming:checked ~ #programming_content, 31#design:checked ~ #design_content { 32 display: block; 33} 34 35.tabs input:checked + .tab_item { 36 background-color: #25c6da; 37 color: #fff; 38}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/16 03:45
2020/03/16 04:55
2020/03/16 05:18
2020/03/16 06:42