投稿した年の最新記事にのみに表示させたい
-
すみません、説明が足りませんでした。
index.phpに投稿したエントリー順に掲載されていく(loop.php)と思うんですが、
通常
<div>0000年00月00日エントリー内容</div>
<div>0000年00月00日エントリー内容</div>
<div>0000年00月00日エントリー内容</div>
・
・
・となると思うのですが、
同じ年に投稿した記事の中で、最新のものに<h3>○○○○年</h3>
と入れたいんです。<div><h3>2012年</h3>2012年4月19日エントリー内容</div>
<div>2012年3月10日エントリー内容</div>
<div>2012年2月22日エントリー内容</div>
<div><h3><2011年</h3>2011年12月29日エントリー内容</div>
<div>2011年11月12日エントリー内容</div>
<div>2011年10月18日エントリー内容</div>
<div>2011年5月5日エントリー内容</div>
<div>2011年2月6日エントリー内容</div>
<div><h3><2010年</h3>2010年12月29日エントリー内容</div>
・
・
・という感じです。
宜しくお願い致します。
こんにちは
複数年にわたる、アーカイブを表示するためには、ご自身ですべての記事をリストするコードを書いているんだと思いますが、そういうことですか?
the_dateだと月・日の情報も取得してしまうためにうまくいきません。
という部分をもう少し具体的に、教えてください。
コードも書いていただけるといいと思います。
追記:twentyeleven等は、?y=2008等で、すべての年を表示するみたいですね。
loopの外に$my_date = '';
loopの中に
<?php if( $my_date !== get_the_date('Y', '<h3>', '</h3>') ){ $my_date = get_the_date('Y', '<h3>', '</h3>'); echo $my_date; } ?>
とかで、(かっこ悪いですが)どうですか?
こんにちは。
>複数年にわたる、アーカイブを表示するためには、ご自身ですべての記事をリストするコードを書いているんだと思いますが、そういうことですか?
いえ、基本的には「twentyten」テーマそのままで、
「AutoPager」というプラグインを使用するだけ、という感じです。通常だと、トップページにエントリーされた記事を○件表示、
ページ下部に「古い投稿へ」でindex.php内を遷移して
次の○件を表示してくれると思うんですが、
「AutoPager」を使用するとページをスクロールした際、
プラグインで指定したid内に次のページを表示してくれます。
http://lagoscript.org/jquery/autopager「その年の最後の記事に<h3>を出力できたらいいなぁ」
と思い、色々調べたんですが、分からず今回質問させていただきました。the_date()ですが、loop.php内に
<?php the_date(‘Y’, ‘<h3>’, ‘</h3>’); ?>を足しただけです。loop.phpから抜粋ですが、
———————————————————-
`<div id=”post-<?php the_ID(); ?>” <?php post_class(); ?>>
<?php the_date(‘Y’, ‘<h3>’, ‘</h3>’); ?>
<h2 class=”entry-title”>” title=”<?php printf( esc_attr__( ‘Permalink to %s’, ‘twentyten’ ), the_title_attribute( ‘echo=0’ ) ); ?>” rel=”bookmark”><?php the_title(); ?></h2>
<div class=”entry-meta”>
<?php twentyten_posted_on(); ?>
</div><!– .entry-meta –><?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?>
<div class=”entry-summary”>
<?php the_excerpt(); ?>
</div><!– .entry-summary –>
<?php else : ?>
<div class=”entry-content”>
<?php the_content( __( ‘Continue reading <span class=”meta-nav”>→</span>’, ‘twentyten’ ) ); ?>
<?php wp_link_pages( array( ‘before’ => ‘<div class=”page-link”>’ . __( ‘Pages:’, ‘twentyten’ ), ‘after’ => ‘</div>’ ) ); ?>
</div><!– .entry-content –>
<?php endif; ?><div class=”entry-utility”>
<?php if ( count( get_the_category() ) ) : ?>
<span class=”cat-links”>
<?php printf( __( ‘<span class=”%1$s”>Posted in</span> %2$s’, ‘twentyten’ ), ‘entry-utility-prep entry-utility-prep-cat-links’, get_the_category_list( ‘, ‘ ) ); ?>
</span>
<span class=”meta-sep”>|</span>
<?php endif; ?>
<?php
$tags_list = get_the_tag_list( ”, ‘, ‘ );
if ( $tags_list ):
?>
<span class=”tag-links”>
<?php printf( __( ‘<span class=”%1$s”>Tagged</span> %2$s’, ‘twentyten’ ), ‘entry-utility-prep entry-utility-prep-tag-links’, $tags_list ); ?>
</span>
<span class=”meta-sep”>|</span>
<?php endif; ?>
<span class=”comments-link”><?php comments_popup_link( __( ‘Leave a comment’, ‘twentyten’ ), __( ‘1 Comment’, ‘twentyten’ ), __( ‘% Comments’, ‘twentyten’ ) ); ?></span>
<?php edit_post_link( __( ‘Edit’, ‘twentyten’ ), ‘<span class=”meta-sep”>|</span> <span class=”edit-link”>’, ‘</span>’ ); ?>
</div><!– .entry-utility –>
</div><!– #post-## –>
———————————————————-これだと
2012年
2012年4月19日 本文
2012年4月19日 本文2012年
2012年3月19日 本文2012年
2012年2月20日 本文2011年
2011年12月29日 本文2011年
2011年10月29日 本文
2011年10月29日 本文2011年
2011年9月1日 本文
・
・
・という感じで出力されてしまいます。
うまく説明できているか不安です。
申し訳ございませんが、これでご理解いただけますでしょうか?宜しくお願い致します。
こんにちは。
「追記」で教えていただいたコードを「twentyeleven」に記述しました。
年はきちんと表示されました!
しかし、エントリーすべてに年が出てしまいますね・・・。2012年
2012年4月19日 本文2012年
2012年4月19日 本文2011年
2012年3月19日 本文2011年
2012年2月20日 本文
・
・
・「twentyeleven」のcontent.phpに
<?php $my_date = ''; ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); the_post(); ?>> <?php if( $my_date !== get_the_date('Y', '<h3>', '</h3>') ) { $my_date = get_the_date('Y', '<h3>', '</h3>'); echo $my_date; } ?>
書き方に何か問題あるでしょうか・・・・。
申し訳ございませんが宜しくお願い致します。
こんにちは
<?php $my_date = '';//これはループの外側に書いてください /* Start the Loop. * * In Twenty Ten we use the same loop in multiple contexts. * It is broken into three main parts: when we're displaying * posts that are in the gallery category, when we're displaying * posts in the asides category, and finally all other posts. * * Additionally, we sometimes check for whether we are on an * archive page, a search page, etc., allowing for small differences * in the loop on each template without actually duplicating * the rest of the loop that is shared. * * Without further ado, the loop: */ ?> <?php while ( have_posts() ) : the_post(); ?>
こんにちは。
うまくいきました!ありがとうございます!
2つほどお伺いしたいのですがよろしいでしょうか?
■1つ目
loopの外側に$my_date = ”;を記述し、loop内に<?php if( $my_date !== get_the_date('Y', '<h3>', '</h3>') ) { $my_date = get_the_date('Y', '<h3>', '</h3>'); echo $my_date; } ?>
を記述したのですが<h3>タグが出力されない原因は何でしょうか?
■2つ目
表示件数を3つに設定した際、次のページに遷移した際に再び年数が
出力されてしまうんですが、次ページになった際も表示しない、という設定は不可能でしょうか?■1ページ目
2012年
2012年4月6日 本文
2012年3月6日 本文
2012年2月6日 本文■2ページ目
2012年1月6日 本文2011年
2011年12月6日 本文
2011年11月6日 本文■3ページめ
2011年10月6日 本文
・
・
・といった感じです。
重ね重ね申し訳ございませんが宜しくお願い致します。
こんにちは
引数間違えました 訂正してください
<?php if( $my_date !== get_the_date('Y') ) { $my_date = get_the_date('Y'); echo '<h3>'. $my_date.'</h3>'; } ?>
AutoPager使っていないので、正確にはいえませんが、$_SESSION[‘my_date’]などで、処理できるかもしれないと思います。
PHPを調べてみてください。ありがとうございます!
$_SESSION[‘my_date’]
は色々調べてします。色々調べて、できるorできないが分かりましたらこの記事を解決済みにさせていただきます!
本当にありがとうございました!
nobitaさんのご指示通り、「$_SESSION[‘my_date’]」で
うまくいきました!■index.php
loop.phpを読み込む前に<?php session_start(); ?> <?php if(is_home() && !is_paged()): ?> <?php $_SESSION['my_date'] = ''; ?> <?php endif; ?>
■loop.php
loop部分に<?php if( $_SESSION['my_date'] !== get_the_date('Y') ) { $_SESSION['my_date'] = get_the_date('Y'); echo '<h2>'. $_SESSION['my_date'] .'</h2>'; } ?>
- トピック「投稿した年の最新記事にのみに表示させたい」には新たに返信することはできません。