WP(ワードプレス)で記事を固定表示したときの表示件数の調整

こんにちは!
今日は表題の件を解説していきます。

ちょっと中途半端な部分もあるんですが、一応解決?というか
やりたいことはできているため備忘録としてソースを残しておきます。

以外とやりたい人おおいはず。

ワードプレスの記事には公開部分に「この投稿を先頭に固定表示」というチェックボックスがあります。
下記画像のようなやつ。
(バージョンが古いやつにはないです)

ここにチェックをいれてもデフォでは動きません。
さらにarchive.phpにもろもろ記載してもなんかうまくうごきません。

ということで、「この投稿を先頭に固定表示」を動かしつつ、固定部分の記事件数+固定じゃない記事件数の
合計でページネーションが動くように、実装してみました。

つまりはこういこうと

【全部で10件表示したい!】

固定記事が2件のときは、それ以外の記事が8件1ページに表示される。
固定記事が5件のときはそれ以外の記事が5件1ページに表示される。

早速ソースです!
そのままコピペして使えるはず。
私はarchive.phpで実装しました。


		<?php
			$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
			$list_count = 10; //全部で表示したい件数
			$sticky = get_option( 'sticky_posts' );//固定の記事を表示する
			if ( !empty( $sticky ) )$list_count -= count( $sticky );//固定の記事があった場合は全件数から固定の記事を引いてね
			?>

			<?php if (have_posts()) : ?>
			<?php  
			if ( count($sticky) > 0 ):
		  	$query = new WP_Query(array(
				'post_type' => array('post'),//カスタム投稿だったらここにカスタム投稿名をいれてね
				'post__in' => $sticky,
				'order' => 'desc',//必要だったら記載
				'orderby' => 'post_date',//必要だったら記載
				'paged' => $paged,
			));	
			?>
			ここにループで回したい内容
			<?php endif; ?>

			<?php if ( $list_count > 0 ):
				$query = new WP_Query(array(
				'post_type' => array('post'),//カスタム投稿だったらここにカスタム投稿名をいれてね
				'ignore_sticky_posts' => 1,
				'post__not_in' => get_option( 'sticky_posts' ),
				'order' => 'desc',//必要だったら記載
				'orderby' => 'post_date',
				'paged' => $paged,
			 	'posts_per_page' => $list_count,
			));?>
			ここにループで回したい内容
				<?php endwhile; ?>
			
			<?php endif; ?>

			<?php wp_reset_postdata(); ?>

			<?php
			/* --------------------------------------------------------------- */
			/*   WP_Queryを使用しているのでページナビに以下を使用 */

			$big = 999999999;
			echo paginate_links( array(
				'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
				'show_all' => true,
				'type' => 'list',
				'format' => '?paged=%#%',
				'current' => max( 1, get_query_var( 'paged' ) ),
				'total' => $query->max_num_pages,
				'prev_text' => '前へ',
				'next_text' => '次へ',
			) );
			/* --------------------------------------------------------------- */
			?>
			<?php else : ?>

			<div class="article">
				<p>現在お知らせはありません。</p>
			</div>

			<?php endif; ?>

以上です。
ほとんどソース紹介みたいになっちゃったけど参考になると思います。
ぜひ!

ちなみに上記だと固定の記事を6件以上投稿するとおかしくなります。
中途半端ですみません!ご参考になれば幸いです。