今年もあと1週間ですね!
2017年もあっという間でした。
今回はスマートカスタムフィールドを使用して各カテゴリーごとにループをまわす方法を備忘録としてのこしておきます。
わたしが今回したかったのは都道府県エリアごとに、コンテンツを追加するということ。
今回はarchive-topics.phpというアーカイブページでテンプレートを作成して
カスタムフィールドをはきだす記載をしていきます。
ただ少し違うのは、プログラム部分で以下のように記載をしていきます。
<?php
$page_info = get_page_by_path('center');
$page = get_post($page_info);
echo $page->post_content;
$args = array(
'numberposts' => -1,
'post_type' => 'center'
);
$posts = get_posts( $args );
?>
<section class="center02">
<?php if( $posts ) : foreach( $posts as $post ) : ?>
<?php
$arrCenter[get_post_meta($post->ID , 'center_area' ,true)]
[get_post_meta($post->ID , 'center_first' ,true)]['center_first']
=get_post_meta($post->ID , 'center_first' ,true);
$arrCenter[get_post_meta($post->ID , 'center_area' ,true)]
[get_post_meta($post->ID , 'center_first' ,true)]['center_ancher']
=get_post_meta($post->ID , 'center_ancher' ,true);
$arrCenter[get_post_meta($post->ID , 'center_area' ,true)]
[get_post_meta($post->ID , 'center_first' ,true)]['center_area']
=get_post_meta($post->ID , 'center_area' ,true);
$arrCenter[get_post_meta($post->ID , 'center_area' ,true)]
[get_post_meta($post->ID , 'center_first' ,true)]['center_pref']
=get_post_meta($post->ID , 'center_pref' ,true);
$arrCenter[get_post_meta($post->ID , 'center_area' ,true)]
[get_post_meta($post->ID , 'center_first' ,true)]['center_cat']
=get_post_meta($post->ID , 'center_cat' ,true);
$arrCenter[get_post_meta($post->ID , 'center_area' ,true)]
[get_post_meta($post->ID , 'center_first' ,true)]['center_name']
=get_post_meta($post->ID , 'center_name' ,true);
?>
<?php endforeach; ?>
<!--ここから北海道-->
<?php if($arrCenter['北海道']): ?> //もし北海道というカテゴリーが選択されていれば
<div class="center_area01">
<h3 class="area_title area01">[北海道]</h3>
<?php foreach( $arrCenter['北海道'] as $center ) :?>
<div class="area_box" id="<?php echo $center['center_ancher']; ?>">
<div class="visial_list thl">
<h4><?php echo $center['center_cat']; ?></h4>
<h2><?php echo nl2br($center['center_first']); ?></h2>
<p class="center_name">団体名:<?php echo $center['center_name']; ?> </p>
</div>
</div>
<?php endforeach; ?>
</div>
<?php else : ?>//北海道というカテゴリーが選択されているものがなければ何も表示しない
<?php endif; ?>
//↑↑を都道府県エリアごとに繰り返す
<?php else : ?>
<div class="article">
<p>現在どの都道府県にもセンターはございません。<br>今しばらくお待ちください。</p>
</div>
<?php endif; ?>
</section>
私自身プログラマーではないので全然詳しい説明はできないのですが
連想配列を使用してカテゴリごとにループをまわしています。
以下が連想配列部分。
<?php $arrCenter[get_post_meta($post->ID , 'center_area' ,true)] [get_post_meta($post->ID , 'center_first' ,true)]['center_first'] =get_post_meta($post->ID , 'center_first' ,true); ?>
ここではカスタムフィールドにエリアを選択させる名前の部分をcenter_areaにしているのですが、
そのcenter_areaとcenter_first(団体名)を連想配列にして指定しています。
連想配列で指定しているぶん、通常のカスタムフィールドとは少し書き方がことなってますが上の指示を引き継いでいるぶん
こういった書き方になっています。
もう少し理解が深められたらもっとわかりやすく詳しく書きたいので、また追記で書かせていただこうと思います!