質問編集履歴

6

本文の変更

2024/11/22 06:59

投稿

azejun0127
azejun0127

スコア10

test CHANGED
@@ -1 +1 @@
1
- 特定記事を一覧ページの先頭に固定表示してページネーション正常に動作させた
1
+ WP-PageNaviのページネーション正常に動作しな
test CHANGED
@@ -1,75 +1,77 @@
1
1
  ### 実現したいこと
2
- ターム一覧ページにてSeamless Sticky Custom Post Typesにて先頭表示にチェック入れてる記事を優先的に表示し、残りすべての記事表示させた上でページネーション(WP-PageNavi)を正常に動作させたい。
2
+ Seamless Sticky Custom Post Typesを使用し固定表示を行、一覧ページ固定表示した投稿とそれ以外投稿全件を取得し、1ページ12記事表示ページネーションを正常に動作させたい。
3
-
4
- 1ページに10記事ごと取得する → 1ページあたり12記事表示したい
5
3
 
6
4
  ### 発生している問題・分からないこと
7
- 下記コードで記述するムで絞り込みもできておらず、1ページに78記事の表示(投稿記事は474記事ある)がされ、ページネーションも表示されない。
5
+ 固定表示した投稿それ以外の投稿それぞれのQueryを1つにまとめてペジネーションに設定したが'posts_per_page' => -1,を設定しているため1ページに全件表示され、ページネーションが正常に動作しない。
8
-
6
+ 表示設定では1ページの最大投稿数は12に設定済み。
9
-
10
7
 
11
8
  ### 該当のソースコード
12
9
 
13
10
  ```PHP
14
- <div class ="gallery-wrapper">
11
+ <div class ="gallery-wrapper">
15
- <?php
12
+ <?php
16
- $term_object = get_queried_object(); // タームオブジェクトを取得
13
+ $term_object = get_queried_object(); // タームオブジェクトを取得
17
- $term_slug = $term_object->slug; // タームスラッグ
14
+ $term_slug = $term_object->slug; // タームスラッグ
15
+ $paged = get_query_var('paged') ? get_query_var('paged') : 1;
16
+ $sticky_args = [
17
+ 'posts_per_page' => -1,
18
+ 'order' => 'DESC',
19
+ 'post_status' => 'publish',
20
+ 'post_type' => 'gallery',
21
+ 'paged' => $paged,
22
+ 'tax_query' => array(
23
+ array(
24
+ 'taxonomy' => 'gallery-cat',
25
+ 'field' => 'slug',
26
+ 'terms' => $term_slug,
27
+ ),
28
+ ),
29
+ 'post__in' => get_option('sticky_posts')
30
+ ];
31
+
32
+ $args = [
33
+ 'posts_per_page' => -1,
34
+ 'order' => 'DESC',
35
+ 'post_status' => 'publish',
36
+ 'post_type' => 'gallery',
37
+ 'paged' => $paged,
38
+ 'tax_query' => array(
39
+ array(
40
+ 'taxonomy' => 'gallery-cat',
41
+ 'field' => 'slug',
42
+ 'terms' => $term_slug,
43
+ ),
44
+ ),
45
+ 'post__not_in' => get_option('sticky_posts')
46
+ ];
18
47
 
19
- $sticky_args = [
20
- 'posts_per_page' => -1,
21
- 'order' => 'DESC',
48
+ $sticky_query = new WP_Query($sticky_args); // 固定表示の記事を取得
22
- 'post_status' => 'publish',
23
- 'post_type' => 'gallery',
24
- 'taxonomy' => 'gallery-cat',
49
+ $the_query = new WP_Query($args); // 固定表示以外の記事を取得
25
- 'field' => 'slug',
50
+
26
- 'terms' => $term_slug,
51
+ $new_query = new WP_Query();
52
+ $new_query->posts = array_merge( $sticky_query->posts, $the_query->posts );
27
- 'post__in' => get_option('sticky_posts')
53
+ $new_query->post_count = $sticky_query->post_count + $the_query->post_count;
54
+
28
- ];
55
+ ?>
29
56
 
30
- $args = [
57
+ <?php
31
- 'posts_per_page' => -1,
32
- 'order' => 'DESC',
33
- 'post_status' => 'publish',
34
- 'post_type' => 'gallery',
35
- 'taxonomy' => 'gallery-cat',
36
- 'field' => 'slug',
37
- 'terms' => $term_slug,
58
+ if($new_query -> have_posts()):
38
- 'post__not_in' => get_option('sticky_posts')
59
+ while ( $new_query -> have_posts() ) : $new_query -> the_post();
39
- ];
60
+ ?>
40
61
 
41
- $sticky_query = new WP_Query($sticky_args); // 固定表示の記事を取得
42
- $the_query = new WP_Query($args); // 固定表示以外の記事を取得
62
+ //ここにループ投稿
43
63
 
44
- $results = array_merge($sticky_query->posts, $the_query->posts);
45
- $display_results = array_slice($results, (max(1, get_query_var('paged')) - 1) * 10, 10); // 1ページに10記事ごと取得する(本当は12記事取得したい)
46
- ?>
47
-
48
- <?php if( $sticky_query -> have_posts() ) :
49
- while ( $sticky_query -> have_posts() ) : $sticky_query -> the_post();
50
-
51
- //ここにループ内容記載
52
-
53
- <?php endwhile; ?>
64
+ <?php endwhile; ?>
54
- <?php endif; ?>
65
+ <?php endif; ?>
55
-
56
- <?php if( $the_query -> have_posts() ) :
57
- while ( $the_query -> have_posts() ) : $the_query -> the_post();
58
-
59
- //ここにループ内容記載
60
-
61
- <?php endwhile; ?>
62
- <?php endif; ?>
63
66
 
64
67
  </div>
65
68
 
66
69
  <div class ="page-nation">
67
70
  <?php
68
- //ページネーション
69
- if(function_exists('wp_pagenavi')):
71
+ if(function_exists('wp_pagenavi')):
70
- wp_pagenavi(array('query'=>$display_results));
72
+ wp_pagenavi(array('query'=>$new_query));
71
- endif;
73
+ endif;
72
- ?>
74
+ ?>
73
75
  </div>
74
76
  ```
75
77
 
@@ -80,9 +82,9 @@
80
82
  - [ ] その他
81
83
 
82
84
  ##### 上記の詳細・結果
83
- こちらの記事参考したです、どのようコードを書いていいかわからない
84
- 自分なりコード記載したが特定のターム絞り込めていなかっり、表示されなかったりなど正常に動作しない
85
- [https://www.fourier.jp/blog/display-custom-posts-fixed-at-the-top](https://www.fourier.jp/blog/display-custom-posts-fixed-at-the-top)
85
+ 'posts_per_page' => -1 'posts_per_page' => 12 変更するとそれぞれ投稿12投稿ずつ取得され1ページ24件記事が表示される
86
+ こちらの記事を参考し、post_count追加ましたが変化は見られませんた。
87
+ [https://ja.stackoverflow.com/questions/82485/%EF%BC%92%E3%81%A4%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%92%E7%B5%90%E5%90%88%E3%81%95%E3%81%9B%E3%81%A6%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E9%96%A2%E9%80%A3%E8%A8%98%E4%BA%8B%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99](https://ja.stackoverflow.com/questions/82485/%EF%BC%92%E3%81%A4%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%92%E7%B5%90%E5%90%88%E3%81%95%E3%81%9B%E3%81%A6%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E9%96%A2%E9%80%A3%E8%A8%98%E4%BA%8B%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99)
86
88
 
87
89
  ### 補足
88
90
  特になし

5

コードの修正

2024/11/22 02:28

投稿

azejun0127
azejun0127

スコア10

test CHANGED
File without changes
test CHANGED
@@ -52,6 +52,14 @@
52
52
 
53
53
  <?php endwhile; ?>
54
54
  <?php endif; ?>
55
+
56
+ <?php if( $the_query -> have_posts() ) :
57
+ while ( $the_query -> have_posts() ) : $the_query -> the_post();
58
+
59
+ //ここにループ内容記載
60
+
61
+ <?php endwhile; ?>
62
+ <?php endif; ?>
55
63
 
56
64
  </div>
57
65
 

4

タグを追加

2024/11/21 12:13

投稿

azejun0127
azejun0127

スコア10

test CHANGED
File without changes
test CHANGED
File without changes

3

タイトルをわかりやすく変更

2024/11/21 12:12

投稿

azejun0127
azejun0127

スコア10

test CHANGED
@@ -1 +1 @@
1
- Seamless Sticky Custom Post Typesを使用して特定の記事をターム一覧ページの先頭に固定表示してページネーションを正常に動作させたい
1
+ 特定の記事を一覧ページの先頭に固定表示してページネーションを正常に動作させたい
test CHANGED
File without changes

2

リンク部分の修正を行った

2024/11/21 09:08

投稿

azejun0127
azejun0127

スコア10

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,7 @@
74
74
  ##### 上記の詳細・結果
75
75
  こちらの記事を参考にしたのですが、どのようにコードを書いていいのかわからない。
76
76
  自分なりにコードを記載したが特定のタームで絞り込めていなかったり、表示されなかったりなど正常に動作しない。
77
- [リンク内容](https://www.fourier.jp/blog/display-custom-posts-fixed-at-the-top)
77
+ [https://www.fourier.jp/blog/display-custom-posts-fixed-at-the-top](https://www.fourier.jp/blog/display-custom-posts-fixed-at-the-top)
78
78
 
79
79
  ### 補足
80
80
  特になし

1

コードの変更

2024/11/21 05:06

投稿

azejun0127
azejun0127

スコア10

test CHANGED
File without changes
test CHANGED
@@ -45,9 +45,12 @@
45
45
  $display_results = array_slice($results, (max(1, get_query_var('paged')) - 1) * 10, 10); // 1ページに10記事ごと取得する(本当は12記事取得したい)
46
46
  ?>
47
47
 
48
- //ここにループ内容記載
48
+ <?php if( $sticky_query -> have_posts() ) :
49
+ while ( $sticky_query -> have_posts() ) : $sticky_query -> the_post();
49
50
 
51
+ //ここにループ内容記載
52
+
50
- <?php endwhile; ?>
53
+ <?php endwhile; ?>
51
54
  <?php endif; ?>
52
55
 
53
56
  </div>