質問編集履歴
6
本文の変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
WP-PageNaviのページネーションが正常に動作しない
|
test
CHANGED
@@ -1,75 +1,77 @@
|
|
1
1
|
### 実現したいこと
|
2
|
-
|
2
|
+
Seamless Sticky Custom Post Typesを使用し固定表示を行い、一覧ページに固定表示した投稿とそれ以外の投稿の全件を取得し、1ページ12記事の表示のページネーションを正常に動作させたい。
|
3
|
-
|
4
|
-
1ページに10記事ごと取得する → 1ページあたり12記事表示したい
|
5
3
|
|
6
4
|
### 発生している問題・分からないこと
|
7
|
-
|
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
|
-
|
12
|
+
<?php
|
16
|
-
|
13
|
+
$term_object = get_queried_object(); // タームオブジェクトを取得
|
17
|
-
|
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
|
-
|
48
|
+
$sticky_query = new WP_Query($sticky_args); // 固定表示の記事を取得
|
22
|
-
'post_status' => 'publish',
|
23
|
-
'post_type' => 'gallery',
|
24
|
-
|
49
|
+
$the_query = new WP_Query($args); // 固定表示以外の記事を取得
|
25
|
-
|
50
|
+
|
26
|
-
|
51
|
+
$new_query = new WP_Query();
|
52
|
+
$new_query->posts = array_merge( $sticky_query->posts, $the_query->posts );
|
27
|
-
|
53
|
+
$new_query->post_count = $sticky_query->post_count + $the_query->post_count;
|
54
|
+
|
28
|
-
|
55
|
+
?>
|
29
56
|
|
30
|
-
|
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
|
-
|
58
|
+
if($new_query -> have_posts()):
|
38
|
-
|
59
|
+
while ( $new_query -> have_posts() ) : $new_query -> the_post();
|
39
|
-
|
60
|
+
?>
|
40
61
|
|
41
|
-
$sticky_query = new WP_Query($sticky_args); // 固定表示の記事を取得
|
42
|
-
|
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
|
-
|
64
|
+
<?php endwhile; ?>
|
54
|
-
|
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
|
-
|
71
|
+
if(function_exists('wp_pagenavi')):
|
70
|
-
|
72
|
+
wp_pagenavi(array('query'=>$new_query));
|
71
|
-
|
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://
|
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
コードの修正
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
タグを追加
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
3
タイトルをわかりやすく変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
特定の記事を一覧ページの先頭に固定表示してページネーションを正常に動作させたい
|
test
CHANGED
File without changes
|
2
リンク部分の修正を行った
test
CHANGED
File without changes
|
test
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
##### 上記の詳細・結果
|
75
75
|
こちらの記事を参考にしたのですが、どのようにコードを書いていいのかわからない。
|
76
76
|
自分なりにコードを記載したが特定のタームで絞り込めていなかったり、表示されなかったりなど正常に動作しない。
|
77
|
-
[
|
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
コードの変更
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>
|