アーカイブページ, カスタム投稿タイプ, カテゴリー
0

カテゴリーページ(アーカイブ)で複数ループ

WordPress初心者&PHP知識ほぼゼロ…..なので、ハマった期間は軽く3日超。涙
忘れないように、メモ書き!

1、通常の「投稿(post)」を利用して「キャバクラ各店舗ページ」
2、カスタム投稿タイプで「ドレスショップ(dressshop)」を作成
この二つを通常のカテゴリーを利用した「エリア=地域」でカテゴリー分け。

テンプレート「アーカイブ」を利用した各カテゴリー(各エリア)ページには、
上部に1、
下部に2、
を表示されるようにする。

つまり、カテゴリー「上野」のカテゴリーページの
上の段に「上野のキャバクラ一覧」※通常の投稿(post)
下の段に「上野のドレスショップ一覧」※カスタム投稿タイプ(dressshop)

この場合、
複数のループが必要になるらしい。

Magicalog | マジカルリミックスエンジニアブログ様の
WordPressで今見ているカテゴリーのIDを取得し、query_postsに代入(改) | Magicalog
を参考にさせて頂き、下記のように記述。

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

<p><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></p>

<?php endwhile; ?>

<!--カスタム投稿タイプshop一覧-->
<?
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id. '&showposts=1';
query_posts($query) ;
?>
<?php global $post; $myposts = get_posts("category=$cat_id&post_type=shop&order=asc&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<p><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php the_title(); ?></a></p>
<!--/カスタム投稿タイプshop一覧-->

<?php else : ?>
<p>キャバクラ店舗の登録がありません</p>


<!--直接応募店舗がない場合のカスタム投稿タイプshop一覧-->
<?
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id. '&showposts=1';
query_posts($query) ;
?>
<?php global $post; $myposts = get_posts("category=$cat_id&post_type=shop&order=asc&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<p><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php the_title(); ?></a></p>
<!--/直接応募店舗がない場合の紹介・派遣先店舗の一覧-->

<?php endif; ?>

狙い通りの表示に……と思いきや、なんか変。。

————
Magicalog | マジカルリミックスエンジニアブログ様の
WordPressで今見ているカテゴリーのIDを取得し、query_postsに代入(改) | Magicalog

<?
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id. '&showposts=1';
query_posts($query) ;
?>
<dl class="news">
<?php global $post; $myposts = get_posts("category=$cat_id&post_type=shop&order=asc&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<dt style="text-align:center;"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php echo post_custom("店舗名アルファベット"); ?></a></dt>
<dd><?php the_title(); ?>【<?php echo get_the_term_list($post->ID, 'type', '', '・'); ?>】</dd>
<?php endforeach; ?>
</dl>

ソースコード全体

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?><?php echo post_custom("店舗名アルファベット"); ?>(<?php echo post_custom("店舗名カナ"); ?>)</a></h2>

<div class="contents">

<p class="left"><img src="http://night-arcs.com/data/<?php echo post_custom("店舗コード"); ?>/top-pc.jpg" alt="<?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?><?php echo post_custom("店舗名アルファベット"); ?>(<?php echo post_custom("店舗名カナ"); ?>)店内画像トップ" width="234" height="176" /></p><p><br /><?php echo post_custom("テキスト1"); ?></p>

</div>


<?php endwhile; ?>

<!--カスタム投稿タイプshop一覧-->
<h2><?php single_cat_title(); ?>エリアの「紹介・派遣」先店舗の一覧</h2>
<div class="contents">

<?
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id. '&showposts=1';
query_posts($query) ;
?>
<dl class="news">
<?php global $post; $myposts = get_posts("category=$cat_id&post_type=shop&order=asc&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<dt style="text-align:center;"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php echo post_custom("店舗名アルファベット"); ?></a></dt>
<dd><?php the_title(); ?>【<?php echo get_the_term_list($post->ID, 'type', '', '・'); ?>】</dd>
<?php endforeach; ?>
</dl>

</div>
<!--/カスタム投稿タイプshop一覧-->


<?php posts_nav_link_keni(); ?>

<?php else : ?>
<h2>店舗がありません</h2>
	<div class="contents">
	<?php single_cat_title(); ?>エリアに直接応募出来る店舗はございません。
    <p><?php printf( __('Back to <a href="%1$s">%2$s</a>','keni'), get_bloginfo('url'), get_bloginfo('name')); ?></p>
	</div>
	
	

<!--直接応募店舗がない場合のカスタム投稿タイプshop一覧-->
<h2><?php single_cat_title(); ?>エリアの「紹介・派遣」先店舗の一覧</h2>
<div class="contents">

<?
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id. '&showposts=1';
query_posts($query) ;
?>
<dl class="news">
<?php global $post; $myposts = get_posts("category=$cat_id&post_type=shop&order=asc&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<dt style="text-align:center;"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php echo post_custom("店舗名アルファベット"); ?></a></dt>
<dd><?php the_title(); ?>【<?php echo get_the_term_list($post->ID, 'type', '', '・'); ?>】</dd>
<?php endforeach; ?>
</dl>

</div>
<!--/直接応募店舗がない場合の紹介・派遣先店舗の一覧-->


<?php endif; ?>

これだけおさえる ネットでバイト様の
ワードプレスで現在のカテゴリーページのIDを取得する方法

<? 
$categoryname = single_cat_title('',false);
$categoryid = get_cat_ID($categoryname);
?>

これで、カテゴリー名⇒カテゴリーIDを取得して、

<? 
$categoryname = single_cat_title('',false);
$categoryid = get_cat_ID($categoryname);
?>
<dl class="news">
<?php global $post; $myposts = get_posts("category=$categoryid&post_type=shop&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<dt style="text-align:center;"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php echo post_custom("店舗名アルファベット"); ?></a></dt>
<dd><?php the_title(); ?>【<?php echo get_the_term_list($post->ID, 'type', '', '・'); ?>】</dd>
<?php endforeach; ?>
</dl>

こうしたら上手くいきました!

全体のソースコード

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?><?php echo post_custom("店舗名アルファベット"); ?>(<?php echo post_custom("店舗名カナ"); ?>)</a></h2>

<div class="contents">

<p class="left"><img src="http://night-arcs.com/data/<?php echo post_custom("店舗コード"); ?>/top-pc.jpg" alt="<?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?><?php echo post_custom("店舗名アルファベット"); ?>(<?php echo post_custom("店舗名カナ"); ?>)店内画像トップ" width="234" height="176" /></p><p><br /><?php echo post_custom("テキスト1"); ?></p>

</div>


<?php endwhile; ?>

<?php posts_nav_link_keni(); ?>

<!--カスタム投稿タイプshop一覧-->
<p><br /></p>
<h2><?php single_cat_title(); ?>エリアの「紹介・派遣」先店舗の一覧</h2>
<div class="contents">





<? 
$categoryname = single_cat_title('',false);
$categoryid = get_cat_ID($categoryname);
?>

<dl class="news">
<?php global $post; $myposts = get_posts("category=$categoryid&post_type=shop&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<dt style="text-align:center;"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php echo post_custom("店舗名アルファベット"); ?></a></dt>
<dd><?php the_title(); ?>【<?php echo get_the_term_list($post->ID, 'type', '', '・'); ?>】</dd>
<?php endforeach; ?>
</dl>

</div>
<!--/カスタム投稿タイプshop一覧-->

<?php else : ?>

<h2>店舗がありません</h2>
<div class="contents">
<?php single_cat_title(); ?>エリアに直接応募出来る店舗はございません。
</div>


<!--カスタム投稿タイプshop一覧-->
<p><br /></p>
<h2><?php single_cat_title(); ?>エリアの「紹介・派遣」先店舗の一覧</h2>
<div class="contents">



<? 
$categoryname = single_cat_title('',false);
$categoryid = get_cat_ID($categoryname);
?>

<dl class="news">
<?php global $post; $myposts = get_posts("category=$categoryid&post_type=shop&numberposts=40");
foreach($myposts as $post) : setup_postdata($post); ?>
<dt style="text-align:center;"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>の詳細へ"><?php echo post_custom("店舗名アルファベット"); ?></a></dt>
<dd><?php the_title(); ?>【<?php echo get_the_term_list($post->ID, 'type', '', '・'); ?>】</dd>
<?php endforeach; ?>
</dl>

</div>
<!--/カスタム投稿タイプshop一覧-->

<?php endif; ?>

カテゴリー名やID、親カテゴリーIDなどの取得コード
※けどこの方法もこの記事のケースではダメでした

<?php
/* 現在のカテゴリ-の取得 */
$cat_now = get_the_category();
$cat_now = $cat_now[0];
/*親カテゴリーのID取得*/
$parent_id = $cat_now->category_parent;
/*現在のカテゴリーID/カテゴリー名取得*/
$now_id = $cat_now->cat_ID; /* カテゴリID */
$now_name = $cat_now->cat_name; /* カテゴリ名 */
?>

OpenMediaLaboratory Blog様の
WordPressでカテゴリID/カテゴリ名を取得する | OpenMediaLaboratory参考

関連記事
WordPressのパーマリンクを自由に設定するプラグイン【Custom Permalinks】
カスタム投稿タイプとは
カスタム投稿タイプとカスタム分類をプラグイン無で設定,表示