Category : アーカイブページ

アーカイブページ, カスタム投稿タイプ, カテゴリー
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参考

続きを読む
functions.php設定, アーカイブページ, カスタム投稿タイプ
0

カスタム投稿タイプのアーカイブページ(一覧ページ)

カスタム投稿タイプとカスタム分類をプラグイン無で設定,表示でつくったカスタム投稿タイプの一覧リストを表示するページ(アーカイブページ)を作成する手順。

'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => 2,
'has_archive' => true,
'supports' => array('title','editor', 'custom-fields','author','excerpt','comments'),
'taxonomies' => array('type','tokyo','nishi_tokyo','popkey')
);
register_post_type('shop',$args);

↑の、30行目がないとアーカイブ生成されず表示不可能なので、

'has_archive' => true,

を、必ず入れる。(これはWordPressの3.1から追加されて機能)

~~~~~~~~~~~~
最初試しに、http://ドメイン.com/shop/とやってみた時、404エラーにはならずページは存在していた。(もちろん投稿一覧は表示されていませんでしたが)
これは、
テンプレートの優先順位が

1、archive-●●●.php(今回の例だとarchive-shop.php)
2、archive.php
3、index.php

の為、archive.phpで表示されていた!ってことですネ。

VARL(ヴァール)様の
WordPress 3.1 から使う、カスタムポストタイプの設定から表示までのまとめ …的なもの – Website Tips ノート : VARL

Labor Of Love – Laughing Out Loud –様の
WordPressカスタム投稿タイプを使って商品紹介ページを作ったよ-part2 | Labor Of Love – Laughing Out Loud

続きを読む
アーカイブページ
0

アーカイブページ年月表示

WordPressのアーカイブページでの年月の表示方法。

2011 8月
<?php wp_title(”); ?>

2011年8月
<?php $date_title = get_query_var(‘year’) . "年".get_query_var(‘monthnum’)."月"; echo $date_title; ?>

あまり利用することはないと思われるが、
<?php printf(_c(‘ %s|Monthly archive page’, ‘kubrick’), get_the_time(__(‘F, Y’, ‘kubrick’))); ?>年
8月, 2011年
と表示するこも出来る。

参考サイト
WordPressのアーカイブページの年月表記を「YYYY年MM月」にする|1bit::memo

続きを読む