ブログ

BLOG

CATEGORY

存在するカスタム投稿タイプの一覧

【やっていること】

  1. カスタムフィールドの値(チェックボックスのbaseとapplied)、baseが選択されている時は~、逆にappliedの時は~。
    それが終わったら
  2. 記事の~
  3. 記事のスラッグ~
  4. 文字抜粋

<?php
//カスタムフィールドで設定した値(base,applied)を配列に入れる
$button_value = array(‘base’, ‘applied’);

//カスタム投稿タイプのみの名前の一覧を取得
$type = array_keys(get_post_types(Array(‘public’ => true,’_builtin’ => false)));

//カスタム投稿タイプの名前の数だけループするための制御変数
$typecount = 0;

//$typecountが$typeの要素の数よりも少なかったら一つ目のwhileループ
while($typecount < count($type)){

//ここで取得したカスタム投稿タイプの名前のlabel、description、nameを取得する準備
$post = get_post_type_object($type[$typecount]);

//$postを使ってlabel(wpの左メニューのカスタム投稿タイプに表示されてるラベルのこと)を取得
$label = $post->label;

//$postを使ってdescriptionを取得
$description = $post->description;

//$postを使ってname(スラッグ)を取得
$name = $post->name;
?>
//クラス名にカスタム投稿タイプのラベルを表示
<section class=”<?php echo $label; ?>”>
<div class=”hgroup cf”>
<div class=”in”>
//クラス名にカスタム投稿タイプのラベルを表示
<h2><?php echo strtoupper($label); ?></h2>

//クラス名にカスタム投稿タイプのdescriptionを表示
<h3><span class=”in_txt_center”><?php echo $description;?></span></h3>

//クラス名にカスタム投稿タイプのname(スラッグ)を表示
<p class=”btn”><a href=”<?php bloginfo(‘url’) ?>/<?php echo $name; ?>/”>一覧</a></p>
</div>
</div>
<div class=”slide_wrap”>
<div class=”in”>
<?php
//$button_valueの要素の数だけループするための制御変数<br>
$button_count = 0;

//$button_countが$button_valueの要素の数より少ない場合(この場合、実質2回のみ)二つ目のwhileループ
while($button_count < count($button_value)){

if($button_count === 0){
?>
//$button_countの値が0だった場合、
<h3>基礎編</h3>
<ul class=”cf contents_slider1 contents_slider”>
<?php }else{ ?>
//$button_countの値が0じゃない場合、
<h3>応用編</h3>
<ul class=”cf contents_slider1 contents_slider”>
<?php } ?>
//ここまでがif($button_count === 0)の処理

//カスタム投稿タイプの記事を8つ表示するための準備
<?php
$args = array(
//先ほどのカスタム投稿タイプの値が入る
‘post_type’ => $type[$typecount],
‘paged’ => $paged,
‘orderby’ => ‘title’,
‘order’ => ‘ASC’,
‘meta_key’ => ‘button’, //カスタムフィールドのキー
‘meta_value’ => $button_value[$button_count], //カスタムフィールドの値が入る(順番としては’base’, ‘applied’の順)
‘posts_per_page’ => 8
);
$the_query = new WP_Query($args);

//ここから記事のループ処理
if($the_query->have_posts()) : while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<li>
<p class=”catname”><?php echo get_the_term_list($post->ID,’castomcat’); ?></p>
<a href=”<?php the_permalink(); ?>”>
<div class=”titiearea cf”>
<p class=”thumbnail”><img src=”http://i.ytimg.com/vi/<?php the_field(‘imageID’); ?>/mqdefault.jpg” width=”95″ height=”70″ alt=”<?php echo $shorttext;?>”/></p>
<?php $shorttext = mb_substr(strip_tags($post-> post_title),0,30).’…’;?>
<h2 class=”posttitle”><?php echo $shorttext;?></h2>
</div>
</a>
<div class=”tagarea cf”>
<p class=”tagname”><?php echo get_the_term_list($post->ID,’customtag’); ?></p>
<ul class=”sns”>
<li class=”fb”><a href=”http://www.facebook.com/sharer.php?u=<?php the_permalink(); ?>&t=<?php echo $shorttext;?>”></a></li>
<li class=”tw”><a href=”http://twitter.com/share?url=<?php the_permalink(); ?>&text=<?php echo $shorttext;?>&via=y_design_com&related=y_design_com&hashtags=dreamweaver” target=”_blank”></a></li>
</ul>
</div>
</li>
<?php endwhile; endif;?>
//記事のループ処理ここまで

</ul>
//最初にカスタムフィールドの値がbaseの記事を取得して表示しているので、$button_countの値を一つ増やすことで次にループする時はappliedの記事が表示されるようにする
<?php $button_count++; ?>

<?php } ?>
//ここまでがwhile($button_count < count($button_value))のループ

</div>
</div>
</section>
//これで一つのカスタム投稿タイプの記事の一覧表示が終わったので次のカスタム投稿タイプの記事を取得できるようにする

<?php $typecount++; ?>
//ここまでがwhile($typecount < count($type))のループ

<?php } ?>


参考サイト
http://weble.org/2011/09/01/getting-custom-post-types