Wordpressについて質問です。


新着記事を固定ページと投稿ページで分けたいです。
とりあえず下記のように作りましたが、
これだと投稿ページも固定ページも新着情報として吐き出してしまいます。

<!-- ▼ 新着情報 ▼ -->
<div id="infoIn">
<?php
$posts = get_posts('numberposts=8&post_type=any&orderby=modified&exclude=1');
if ($posts) {
?>
<?php foreach($posts as $post): setup_postdata($post); ?>
<div class="info_each">
<span class="info_day"><?php the_modified_date('y年m月d日'); ?></span>
<span class="info_contents"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span>
<div class="clearBoth"></div>
</div>
<?php endforeach; ?>
<?php } ?>
</div><!-- / #infoIn -->
<div class="clearBoth"></div>
<!-- △ 新着情報 △ -->

固定ページだけの新着情報と投稿ページだけの新着情報を表示させるにはどうしたらよいでしょうか?

PHP5、Wordpress3.5、windows7という環境でやってます。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/08/06 14:32:56
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント100pt

新着情報ですからサイトのトップページへの表示ですね?
条件判定で「is_home()」または「is_front_page()」の1ページ目に該当する場合だけ表示するようにしています。
投稿ページは「post_type」に「post」を、固定ページは「post_type」に「page」を指定して取得します。
※投稿と固定ページの2つ分記述してもいいのですが、続けて表示するなら次のようにしても表示できます。

<?php $paged = get_query_var( 'paged' ); ?>
<?php if ( ( is_home() || is_front_page() ) && $paged <= 1 ) : ?>
	// ポストタイプと新着情報の見出し用のタイトルを指定します。
	<?php $postsinfo = array( array( 'type' => 'post', 'title' => '□■の新着' ), array( 'type' => 'page', 'title' => '●○●の新着' ) ); ?>
	<?php foreach($postsinfo as $info) : ?>
	<!-- ▼ 新着情報 ▼ -->
	<div id="infoIn"> 
		<h2><?php echo $info['title'] ; ?></h2>
	<?php $newposts = get_posts('numberposts=8&post_type='. $info['type'] . '&orderby=modified&exclude=1');
	if ($posts) { ?>
		<?php foreach($newposts as $post): setup_postdata($post); ?>
		<div class="info_each">
			<span class="info_day"><?php the_modified_date('y年m月d日'); ?></span>
			<span class="info_contents"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span>
			<div class="clearBoth"></div>
		</div>
		<?php endforeach; ?>
	<?php } ?>
	</div><!-- / #infoIn -->
	<div class="clearBoth"></div>
	<!-- △ 新着情報 △ -->
	<?php endforeach; ?>
<?php endif; ?>


※「get_posts()」の返り値に指定していた「$posts」は特別な変数(※メインクエリ用)ですので、ここでは別の変数「$newposts」に入れています。

id:uuktyu

ご回答ありがとうございました。
うまくいきました。大事につかわせていただきます。

2013/08/06 14:32:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません