WordPress Snippet

ワードプレスをカスタマイズしよう

Sticky Postは、ループ内で表示される事がある。

http://ja.forums.wordpress.org/topic/11357?replies=6(@source)

1pageに表示する投稿数を10としている時、2ページ目以降に存在するsticky postは、通常の投稿と同様に、表示されます。
「Sticky postは、トップページの冒頭に1回だけ表示させたい。」という場合の、シンプルな対応例

post_class()に自前クラスを追加する。

考え方

冒頭のスティッキー表示には、sticky クラスが追加されるが、
2ページ以降のスティッキー投稿には、stickyクラスがつかない。
stikyクラス+自前クラスは表示、自前クラスだけなら、非表示というコントロールをしています。

if(have_posts()){
		raindrops_loop_title();
		while (have_posts()){
				the_post();
				$raindrops_add_class= array();

		if( is_sticky() ){
			$raindrops_add_class= array( 'raindrops-sticky' );
		} ?>
		<li>
		 <div id="post-<?php the_ID(); ?>" <?php post_class( $raindrops_add_class ); ?>>

あとは、style.cssで表示のコントロールをします。

.raindrops-sticky{
	display:none;
}
.sticky.raindrops-sticky{
	display:block;
}

「この投稿を先頭に固定表示」の意味からすれば、2ページ目以降に普通の投稿と同じように表示されるのに違和感を覚えるのは、理解できる。次のRaindropsテーマでこの機能の追加 検討する事にした。

htmlソースそのものから、Sticky once にするアイディア

<?php
	if(have_posts()){
		while (have_posts()){
				the_post();
				$class_array= get_post_class();
		if( ! is_sticky() or in_array( 'sticky', $class_array ) ){
		 ?>
		<li>
		 <div id="post-<?php the_ID(); ?>" <?php post_class( ); ?>>
			.........いろいろ
		 </div>
		</li>

		<?php }?>
		<?php	} //end while	?>

}//if have_posts
?>

[emulsion_relate_posts]