こんにちは!
今日は表題の件を解説していきます。
ちょっと中途半端な部分もあるんですが、一応解決?というか
やりたいことはできているため備忘録としてソースを残しておきます。
以外とやりたい人おおいはず。
ワードプレスの記事には公開部分に「この投稿を先頭に固定表示」というチェックボックスがあります。
下記画像のようなやつ。
(バージョンが古いやつにはないです)
ここにチェックをいれてもデフォでは動きません。
さらに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件以上投稿するとおかしくなります。
中途半端ですみません!ご参考になれば幸いです。